| 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 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 void DecodeType5(Instr* instr); | 225 void DecodeType5(Instr* instr); |
| 226 void DecodeType6(Instr* instr); | 226 void DecodeType6(Instr* instr); |
| 227 void DecodeType7(Instr* instr); | 227 void DecodeType7(Instr* instr); |
| 228 void DecodeUnconditional(Instr* instr); | 228 void DecodeUnconditional(Instr* instr); |
| 229 | 229 |
| 230 // Support for VFP. | 230 // Support for VFP. |
| 231 void DecodeTypeVFP(Instr* instr); | 231 void DecodeTypeVFP(Instr* instr); |
| 232 void DecodeType6CoprocessorIns(Instr* instr); | 232 void DecodeType6CoprocessorIns(Instr* instr); |
| 233 | 233 |
| 234 // Executes one instruction. | 234 // Executes one instruction. |
| 235 void InstructionDecode(Instr* instr); | 235 void InstructionDecode(int32_t pc); |
| 236 void InstructionDecodeArm(Instr* instr); |
| 237 void InstructionDecodeThumb2(byte* pc); |
| 236 | 238 |
| 237 // Runtime call support. | 239 // Runtime call support. |
| 238 static void* RedirectExternalReference(void* external_function, | 240 static void* RedirectExternalReference(void* external_function, |
| 239 bool fp_return); | 241 bool fp_return); |
| 240 | 242 |
| 241 // For use in calls that take two double values, constructed from r0, r1, r2 | 243 // For use in calls that take two double values, constructed from r0, r1, r2 |
| 242 // and r3. | 244 // and r3. |
| 243 void GetFpArgs(double* x, double* y); | 245 void GetFpArgs(double* x, double* y); |
| 244 void SetFpResult(const double& result); | 246 void SetFpResult(const double& result); |
| 245 void TrashCallerSaveRegisters(); | 247 void TrashCallerSaveRegisters(); |
| 248 // Thumb specific stuff |
| 249 int32_t GetOperand2(const InstrThumb2& instr, bool* carry_out); |
| 250 int32_t GetRmShiftImm(const InstrThumb2& instr, bool* carry_out); |
| 251 void PrintThumb2(const InstrThumb2& instr); |
| 252 inline bool InThumbMode() const {return (get_pc() & 1) == 1;}; |
| 246 | 253 |
| 247 // Architecture state. | 254 // Architecture state. |
| 248 int32_t registers_[16]; | 255 int32_t registers_[16]; |
| 249 bool n_flag_; | 256 bool n_flag_; |
| 250 bool z_flag_; | 257 bool z_flag_; |
| 251 bool c_flag_; | 258 bool c_flag_; |
| 252 bool v_flag_; | 259 bool v_flag_; |
| 253 | 260 |
| 254 // VFP architecture state. | 261 // VFP architecture state. |
| 255 unsigned int vfp_register[num_s_registers]; | 262 unsigned int vfp_register[num_s_registers]; |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 | 304 |
| 298 static inline void UnregisterCTryCatch() { | 305 static inline void UnregisterCTryCatch() { |
| 299 assembler::arm::Simulator::current()->PopAddress(); | 306 assembler::arm::Simulator::current()->PopAddress(); |
| 300 } | 307 } |
| 301 }; | 308 }; |
| 302 | 309 |
| 303 | 310 |
| 304 #endif // defined(__arm__) | 311 #endif // defined(__arm__) |
| 305 | 312 |
| 306 #endif // V8_ARM_SIMULATOR_ARM_H_ | 313 #endif // V8_ARM_SIMULATOR_ARM_H_ |
| OLD | NEW |