Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: src/arm/simulator-arm.cc

Issue 6822025: ARM: Remove support for ABI prior to EABI (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Review comments addresses Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/arm/macro-assembler-arm.cc ('k') | src/conversions-inl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 920 matching lines...) Expand 10 before | Expand all | Expand 10 after
931 } 931 }
932 932
933 933
934 void Simulator::set_d_register_from_double(int dreg, const double& dbl) { 934 void Simulator::set_d_register_from_double(int dreg, const double& dbl) {
935 ASSERT((dreg >= 0) && (dreg < num_d_registers)); 935 ASSERT((dreg >= 0) && (dreg < num_d_registers));
936 // Read the bits from the double precision floating point value into the two 936 // Read the bits from the double precision floating point value into the two
937 // consecutive unsigned integer elements of vfp_register[] given by index 937 // consecutive unsigned integer elements of vfp_register[] given by index
938 // 2*sreg and 2*sreg+1. 938 // 2*sreg and 2*sreg+1.
939 char buffer[2 * sizeof(vfp_register[0])]; 939 char buffer[2 * sizeof(vfp_register[0])];
940 memcpy(buffer, &dbl, 2 * sizeof(vfp_register[0])); 940 memcpy(buffer, &dbl, 2 * sizeof(vfp_register[0]));
941 #ifndef BIG_ENDIAN_FLOATING_POINT
942 memcpy(&vfp_register[dreg * 2], buffer, 2 * sizeof(vfp_register[0])); 941 memcpy(&vfp_register[dreg * 2], buffer, 2 * sizeof(vfp_register[0]));
943 #else
944 memcpy(&vfp_register[dreg * 2], &buffer[4], sizeof(vfp_register[0]));
945 memcpy(&vfp_register[dreg * 2 + 1], &buffer[0], sizeof(vfp_register[0]));
946 #endif
947 } 942 }
948 943
949 944
950 float Simulator::get_float_from_s_register(int sreg) { 945 float Simulator::get_float_from_s_register(int sreg) {
951 ASSERT((sreg >= 0) && (sreg < num_s_registers)); 946 ASSERT((sreg >= 0) && (sreg < num_s_registers));
952 947
953 float sm_val = 0.0; 948 float sm_val = 0.0;
954 // Read the bits from the unsigned integer vfp_register[] array 949 // Read the bits from the unsigned integer vfp_register[] array
955 // into the single precision floating point value and return it. 950 // into the single precision floating point value and return it.
956 char buffer[sizeof(vfp_register[0])]; 951 char buffer[sizeof(vfp_register[0])];
(...skipping 16 matching lines...) Expand all
973 } 968 }
974 969
975 970
976 double Simulator::get_double_from_d_register(int dreg) { 971 double Simulator::get_double_from_d_register(int dreg) {
977 ASSERT((dreg >= 0) && (dreg < num_d_registers)); 972 ASSERT((dreg >= 0) && (dreg < num_d_registers));
978 973
979 double dm_val = 0.0; 974 double dm_val = 0.0;
980 // Read the bits from the unsigned integer vfp_register[] array 975 // Read the bits from the unsigned integer vfp_register[] array
981 // into the double precision floating point value and return it. 976 // into the double precision floating point value and return it.
982 char buffer[2 * sizeof(vfp_register[0])]; 977 char buffer[2 * sizeof(vfp_register[0])];
983 #ifdef BIG_ENDIAN_FLOATING_POINT
984 memcpy(&buffer[0], &vfp_register[2 * dreg + 1], sizeof(vfp_register[0]));
985 memcpy(&buffer[4], &vfp_register[2 * dreg], sizeof(vfp_register[0]));
986 #else
987 memcpy(buffer, &vfp_register[2 * dreg], 2 * sizeof(vfp_register[0])); 978 memcpy(buffer, &vfp_register[2 * dreg], 2 * sizeof(vfp_register[0]));
988 #endif
989 memcpy(&dm_val, buffer, 2 * sizeof(vfp_register[0])); 979 memcpy(&dm_val, buffer, 2 * sizeof(vfp_register[0]));
990 return(dm_val); 980 return(dm_val);
991 } 981 }
992 982
993 983
994 // For use in calls that take two double values, constructed from r0, r1, r2 984 // For use in calls that take two double values, constructed from r0, r1, r2
995 // and r3. 985 // and r3.
996 void Simulator::GetFpArgs(double* x, double* y) { 986 void Simulator::GetFpArgs(double* x, double* y) {
997 // We use a char buffer to get around the strict-aliasing rules which 987 // We use a char buffer to get around the strict-aliasing rules which
998 // otherwise allow the compiler to optimize away the copy. 988 // otherwise allow the compiler to optimize away the copy.
(...skipping 2280 matching lines...) Expand 10 before | Expand all | Expand 10 after
3279 uintptr_t address = *stack_slot; 3269 uintptr_t address = *stack_slot;
3280 set_register(sp, current_sp + sizeof(uintptr_t)); 3270 set_register(sp, current_sp + sizeof(uintptr_t));
3281 return address; 3271 return address;
3282 } 3272 }
3283 3273
3284 } } // namespace v8::internal 3274 } } // namespace v8::internal
3285 3275
3286 #endif // USE_SIMULATOR 3276 #endif // USE_SIMULATOR
3287 3277
3288 #endif // V8_TARGET_ARCH_ARM 3278 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « src/arm/macro-assembler-arm.cc ('k') | src/conversions-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698