Index: src/ppc/constants-ppc.h |
diff --git a/src/ppc/constants-ppc.h b/src/ppc/constants-ppc.h |
index 9434b8f92feb43e9e277c6e6058bb54f8b99af13..58d443001963a573c702a83c4296573e17195f32 100644 |
--- a/src/ppc/constants-ppc.h |
+++ b/src/ppc/constants-ppc.h |
@@ -163,6 +163,7 @@ enum OpcodeExt2 { |
SUBFCX = 8 << 1, |
ADDCX = 10 << 1, |
MULHWUX = 11 << 1, |
+ ISEL = 15 << 1, |
MFCR = 19 << 1, |
LWARX = 20 << 1, |
LDX = 21 << 1, |
@@ -192,17 +193,17 @@ enum OpcodeExt2 { |
STWX = 151 << 1, // store word w/ x-form |
MTVSRD = 179 << 1, // Move To VSR Doubleword |
STDUX = 181 << 1, |
- STWUX = 183 << 1, // store word w/ update x-form |
- /* |
- MTCRF |
- MTMSR |
- STWCXx |
- SUBFZEX |
- */ |
- ADDZEX = 202 << 1, // Add to Zero Extended |
- /* |
- MTSR |
- */ |
+ STWUX = 183 << 1, // store word w/ update x-form |
+ /* |
+ MTCRF |
+ MTMSR |
+ STWCXx |
+ SUBFZEX |
+ */ |
+ ADDZEX = 202 << 1, // Add to Zero Extended |
+ /* |
+ MTSR |
+ */ |
MTVSRWA = 211 << 1, // Move To VSR Word Algebraic |
STBX = 215 << 1, // store byte w/ x-form |
MULLD = 233 << 1, // Multiply Low Double Word |
@@ -212,13 +213,17 @@ enum OpcodeExt2 { |
ADDX = 266 << 1, // Add |
LHZX = 279 << 1, // load half-word zero w/ x-form |
LHZUX = 311 << 1, // load half-word zero w/ update x-form |
+ LWAX = 341 << 1, // load word algebraic w/ x-form |
LHAX = 343 << 1, // load half-word algebraic w/ x-form |
LHAUX = 375 << 1, // load half-word algebraic w/ update x-form |
XORX = 316 << 1, // Exclusive OR |
MFSPR = 339 << 1, // Move from Special-Purpose-Register |
STHX = 407 << 1, // store half-word w/ x-form |
+ ORC = 412 << 1, // Or with Complement |
STHUX = 439 << 1, // store half-word w/ update x-form |
ORX = 444 << 1, // Or |
+ DIVDU = 457 << 1, // Divide Double Word Unsigned |
+ DIVWU = 459 << 1, // Divide Word Unsigned |
MTSPR = 467 << 1, // Move to Special-Purpose-Register |
DIVD = 489 << 1, // Divide Double Word |
DIVW = 491 << 1, // Divide Word |
@@ -267,6 +272,9 @@ enum OpcodeExt4 { |
FMR = 72 << 1, // Floating Move Register |
MTFSFI = 134 << 1, // Move to FPSCR Field Immediate |
FABS = 264 << 1, // Floating Absolute Value |
+ FRIN = 392 << 1, // Floating Round to Integer Nearest |
+ FRIZ = 424 << 1, // Floating Round to Integer Toward Zero |
+ FRIP = 456 << 1, // Floating Round to Integer Plus |
FRIM = 488 << 1, // Floating Round to Integer Minus |
MFFS = 583 << 1, // move from FPSCR x-form |
MTFSF = 711 << 1, // move to FPSCR fields XFL-form |
@@ -334,26 +342,6 @@ enum { |
kTOMask = 0x1f << 21 |
}; |
-// the following is to differentiate different faked opcodes for |
-// the BOGUS PPC instruction we invented (when bit 25 is 0) or to mark |
-// different stub code (when bit 25 is 1) |
-// - use primary opcode 1 for undefined instruction |
-// - use bit 25 to indicate whether the opcode is for fake-arm |
-// instr or stub-marker |
-// - use the least significant 6-bit to indicate FAKE_OPCODE_T or |
-// MARKER_T |
-#define FAKE_OPCODE 1 << 26 |
-#define MARKER_SUBOPCODE_BIT 25 |
-#define MARKER_SUBOPCODE 1 << MARKER_SUBOPCODE_BIT |
-#define FAKER_SUBOPCODE 0 << MARKER_SUBOPCODE_BIT |
- |
-enum FAKE_OPCODE_T { |
- fBKPT = 14, |
- fLastFaker // can't be more than 128 (2^^7) |
-}; |
-#define FAKE_OPCODE_HIGH_BIT 7 // fake opcode has to fall into bit 0~7 |
-#define F_NEXT_AVAILABLE_STUB_MARKER 369 // must be less than 2^^9 (512) |
-#define STUB_MARKER_HIGH_BIT 9 // stub marker has to fall into bit 0~9 |
// ----------------------------------------------------------------------------- |
// Addressing modes and instruction variants. |
@@ -411,9 +399,7 @@ enum SoftwareInterruptCodes { |
// break point |
kBreakpoint = 0x821008, // bits23-0 of 0x7d821008 = twge r2, r2 |
// stop |
- kStopCode = 1 << 23, |
- // info |
- kInfo = 0x9ff808 // bits23-0 of 0x7d9ff808 = twge r31, r31 |
+ kStopCode = 1 << 23 |
}; |
const uint32_t kStopCodeMask = kStopCode - 1; |
const uint32_t kMaxStopCode = kStopCode - 1; |