|
|
|
@ -76,24 +76,28 @@
|
|
|
|
|
#define R15MODE (state->Reg[15] & R15MODEBITS)
|
|
|
|
|
|
|
|
|
|
// Different ways to start the next instruction.
|
|
|
|
|
#define SEQ 0
|
|
|
|
|
#define NONSEQ 1
|
|
|
|
|
#define PCINCEDSEQ 2
|
|
|
|
|
#define PCINCEDNONSEQ 3
|
|
|
|
|
#define PRIMEPIPE 4
|
|
|
|
|
#define RESUME 8
|
|
|
|
|
enum {
|
|
|
|
|
SEQ = 0,
|
|
|
|
|
NONSEQ = 1,
|
|
|
|
|
PCINCEDSEQ = 2,
|
|
|
|
|
PCINCEDNONSEQ = 3,
|
|
|
|
|
PRIMEPIPE = 4,
|
|
|
|
|
RESUME = 8
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Values for Emulate.
|
|
|
|
|
enum {
|
|
|
|
|
STOP = 0, // Stop
|
|
|
|
|
CHANGEMODE = 1, // Change mode
|
|
|
|
|
ONCE = 2, // Execute just one interation
|
|
|
|
|
RUN = 3 // Continuous execution
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#define FLUSHPIPE state->NextInstr |= PRIMEPIPE
|
|
|
|
|
|
|
|
|
|
// Macro to rotate n right by b bits.
|
|
|
|
|
#define ROTATER(n, b) (((n) >> (b)) | ((n) << (32 - (b))))
|
|
|
|
|
|
|
|
|
|
// Values for Emulate.
|
|
|
|
|
#define STOP 0 // stop
|
|
|
|
|
#define CHANGEMODE 1 // change mode
|
|
|
|
|
#define ONCE 2 // execute just one interation
|
|
|
|
|
#define RUN 3 // continuous execution
|
|
|
|
|
|
|
|
|
|
// Stuff that is shared across modes.
|
|
|
|
|
extern unsigned ARMul_MultTable[]; // Number of I cycles for a mult.
|
|
|
|
|
extern ARMword ARMul_ImmedTable[]; // Immediate DP LHS values.
|
|
|
|
|