OLD | NEW |
1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 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 27 matching lines...) Expand all Loading... |
38 | 38 |
39 // Only build the simulator if not compiling for real ARM hardware. | 39 // Only build the simulator if not compiling for real ARM hardware. |
40 namespace assembler { | 40 namespace assembler { |
41 namespace arm { | 41 namespace arm { |
42 | 42 |
43 using ::v8::internal::Object; | 43 using ::v8::internal::Object; |
44 using ::v8::internal::PrintF; | 44 using ::v8::internal::PrintF; |
45 using ::v8::internal::OS; | 45 using ::v8::internal::OS; |
46 using ::v8::internal::ReadLine; | 46 using ::v8::internal::ReadLine; |
47 using ::v8::internal::DeleteArray; | 47 using ::v8::internal::DeleteArray; |
| 48 using ::v8::internal::RotateRight; |
48 | 49 |
49 // This macro provides a platform independent use of sscanf. The reason for | 50 // This macro provides a platform independent use of sscanf. The reason for |
50 // SScanF not being implemented in a platform independent was through | 51 // SScanF not being implemented in a platform independent was through |
51 // ::v8::internal::OS in the same way as SNPrintF is that the Windows C Run-Time | 52 // ::v8::internal::OS in the same way as SNPrintF is that the Windows C Run-Time |
52 // Library does not provide vsscanf. | 53 // Library does not provide vsscanf. |
53 #define SScanF sscanf // NOLINT | 54 #define SScanF sscanf // NOLINT |
54 | 55 |
55 // The Debugger class is used by the simulator while debugging simulated ARM | 56 // The Debugger class is used by the simulator while debugging simulated ARM |
56 // code. | 57 // code. |
57 class Debugger { | 58 class Debugger { |
(...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
810 uint32_t uresult = static_cast<uint32_t>(result); | 811 uint32_t uresult = static_cast<uint32_t>(result); |
811 uresult >>= (shift_amount - 1); | 812 uresult >>= (shift_amount - 1); |
812 *carry_out = (uresult & 1) == 1; | 813 *carry_out = (uresult & 1) == 1; |
813 uresult >>= 1; | 814 uresult >>= 1; |
814 result = static_cast<int32_t>(uresult); | 815 result = static_cast<int32_t>(uresult); |
815 } | 816 } |
816 break; | 817 break; |
817 } | 818 } |
818 | 819 |
819 case ROR: { | 820 case ROR: { |
820 UNIMPLEMENTED(); | 821 ASSERT(shift_amount > 0); |
| 822 uint32_t uresult = static_cast<uint32_t>(result); |
| 823 uresult = RotateRight(uresult, shift_amount - 1); |
| 824 *carry_out = (uresult & 1) == 1; |
| 825 uresult = RotateRight(uresult, 1); |
| 826 result = static_cast<int32_t>(uresult); |
821 break; | 827 break; |
822 } | 828 } |
823 | 829 |
824 default: { | 830 default: { |
825 UNREACHABLE(); | 831 UNREACHABLE(); |
826 break; | 832 break; |
827 } | 833 } |
828 } | 834 } |
829 } else { | 835 } else { |
830 // by register | 836 // by register |
(...skipping 982 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1813 set_register(r10, r10_val); | 1819 set_register(r10, r10_val); |
1814 set_register(r11, r11_val); | 1820 set_register(r11, r11_val); |
1815 | 1821 |
1816 int result = get_register(r0); | 1822 int result = get_register(r0); |
1817 return reinterpret_cast<Object*>(result); | 1823 return reinterpret_cast<Object*>(result); |
1818 } | 1824 } |
1819 | 1825 |
1820 } } // namespace assembler::arm | 1826 } } // namespace assembler::arm |
1821 | 1827 |
1822 #endif // !defined(__arm__) | 1828 #endif // !defined(__arm__) |
OLD | NEW |