OLD | NEW |
1 // Copyright 2010 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 |
11 // with the distribution. | 11 // with the distribution. |
(...skipping 17 matching lines...) Expand all Loading... |
29 | 29 |
30 #if defined(V8_TARGET_ARCH_MIPS) | 30 #if defined(V8_TARGET_ARCH_MIPS) |
31 | 31 |
32 #include "constants-mips.h" | 32 #include "constants-mips.h" |
33 | 33 |
34 namespace v8 { | 34 namespace v8 { |
35 namespace internal { | 35 namespace internal { |
36 | 36 |
37 | 37 |
38 // ----------------------------------------------------------------------------- | 38 // ----------------------------------------------------------------------------- |
39 // Registers | 39 // Registers. |
40 | 40 |
41 | 41 |
42 // These register names are defined in a way to match the native disassembler | 42 // These register names are defined in a way to match the native disassembler |
43 // formatting. See for example the command "objdump -d <binary file>". | 43 // formatting. See for example the command "objdump -d <binary file>". |
44 const char* Registers::names_[kNumSimuRegisters] = { | 44 const char* Registers::names_[kNumSimuRegisters] = { |
45 "zero_reg", | 45 "zero_reg", |
46 "at", | 46 "at", |
47 "v0", "v1", | 47 "v0", "v1", |
48 "a0", "a1", "a2", "a3", | 48 "a0", "a1", "a2", "a3", |
49 "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", | 49 "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 } | 138 } |
139 i++; | 139 i++; |
140 } | 140 } |
141 | 141 |
142 // No Cregister with the reguested name found. | 142 // No Cregister with the reguested name found. |
143 return kInvalidFPURegister; | 143 return kInvalidFPURegister; |
144 } | 144 } |
145 | 145 |
146 | 146 |
147 // ----------------------------------------------------------------------------- | 147 // ----------------------------------------------------------------------------- |
148 // Instruction | 148 // Instructions. |
149 | 149 |
150 bool Instruction::IsForbiddenInBranchDelay() const { | 150 bool Instruction::IsForbiddenInBranchDelay() const { |
151 const int op = OpcodeFieldRaw(); | 151 const int op = OpcodeFieldRaw(); |
152 switch (op) { | 152 switch (op) { |
153 case J: | 153 case J: |
154 case JAL: | 154 case JAL: |
155 case BEQ: | 155 case BEQ: |
156 case BNE: | 156 case BNE: |
157 case BLEZ: | 157 case BLEZ: |
158 case BGTZ: | 158 case BGTZ: |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 break; | 286 break; |
287 case SPECIAL3: | 287 case SPECIAL3: |
288 switch (FunctionFieldRaw()) { | 288 switch (FunctionFieldRaw()) { |
289 case INS: | 289 case INS: |
290 case EXT: | 290 case EXT: |
291 return kRegisterType; | 291 return kRegisterType; |
292 default: | 292 default: |
293 UNREACHABLE(); | 293 UNREACHABLE(); |
294 }; | 294 }; |
295 break; | 295 break; |
296 case COP1: // Coprocessor instructions | 296 case COP1: // Coprocessor instructions. |
297 switch (RsFieldRawNoAssert()) { | 297 switch (RsFieldRawNoAssert()) { |
298 case BC1: // branch on coprocessor condition | 298 case BC1: // Branch on coprocessor condition. |
299 return kImmediateType; | 299 return kImmediateType; |
300 default: | 300 default: |
301 return kRegisterType; | 301 return kRegisterType; |
302 }; | 302 }; |
303 break; | 303 break; |
304 // 16 bits Immediate type instructions. eg: addi dest, src, imm16 | 304 // 16 bits Immediate type instructions. eg: addi dest, src, imm16. |
305 case REGIMM: | 305 case REGIMM: |
306 case BEQ: | 306 case BEQ: |
307 case BNE: | 307 case BNE: |
308 case BLEZ: | 308 case BLEZ: |
309 case BGTZ: | 309 case BGTZ: |
310 case ADDI: | 310 case ADDI: |
311 case ADDIU: | 311 case ADDIU: |
312 case SLTI: | 312 case SLTI: |
313 case SLTIU: | 313 case SLTIU: |
314 case ANDI: | 314 case ANDI: |
(...skipping 14 matching lines...) Expand all Loading... |
329 case SB: | 329 case SB: |
330 case SH: | 330 case SH: |
331 case SWL: | 331 case SWL: |
332 case SW: | 332 case SW: |
333 case SWR: | 333 case SWR: |
334 case LWC1: | 334 case LWC1: |
335 case LDC1: | 335 case LDC1: |
336 case SWC1: | 336 case SWC1: |
337 case SDC1: | 337 case SDC1: |
338 return kImmediateType; | 338 return kImmediateType; |
339 // 26 bits immediate type instructions. eg: j imm26 | 339 // 26 bits immediate type instructions. eg: j imm26. |
340 case J: | 340 case J: |
341 case JAL: | 341 case JAL: |
342 return kJumpType; | 342 return kJumpType; |
343 default: | 343 default: |
344 UNREACHABLE(); | 344 UNREACHABLE(); |
345 }; | 345 }; |
346 return kUnsupported; | 346 return kUnsupported; |
347 } | 347 } |
348 | 348 |
349 | 349 |
350 } } // namespace v8::internal | 350 } } // namespace v8::internal |
351 | 351 |
352 #endif // V8_TARGET_ARCH_MIPS | 352 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |