|
|
@ -89,30 +89,11 @@ struct ARMul_State
|
|
|
|
unsigned bigendSig;
|
|
|
|
unsigned bigendSig;
|
|
|
|
unsigned syscallSig;
|
|
|
|
unsigned syscallSig;
|
|
|
|
|
|
|
|
|
|
|
|
// For differentiating ARM core emulation.
|
|
|
|
|
|
|
|
bool is_v4; // Are we emulating a v4 architecture (or higher)?
|
|
|
|
|
|
|
|
bool is_v5; // Are we emulating a v5 architecture?
|
|
|
|
|
|
|
|
bool is_v5e; // Are we emulating a v5e architecture?
|
|
|
|
|
|
|
|
bool is_v6; // Are we emulating a v6 architecture?
|
|
|
|
|
|
|
|
bool is_v7; // Are we emulating a v7 architecture?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO(bunnei): Move this cache to a better place - it should be per codeset (likely per
|
|
|
|
// TODO(bunnei): Move this cache to a better place - it should be per codeset (likely per
|
|
|
|
// process for our purposes), not per ARMul_State (which tracks CPU core state).
|
|
|
|
// process for our purposes), not per ARMul_State (which tracks CPU core state).
|
|
|
|
std::unordered_map<u32, int> instruction_cache;
|
|
|
|
std::unordered_map<u32, int> instruction_cache;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/***************************************************************************\
|
|
|
|
|
|
|
|
* Types of ARM we know about *
|
|
|
|
|
|
|
|
\***************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
|
|
|
ARM_v4_Prop = 0x01,
|
|
|
|
|
|
|
|
ARM_v5_Prop = 0x02,
|
|
|
|
|
|
|
|
ARM_v5e_Prop = 0x04,
|
|
|
|
|
|
|
|
ARM_v6_Prop = 0x08,
|
|
|
|
|
|
|
|
ARM_v7_Prop = 0x10,
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/***************************************************************************\
|
|
|
|
/***************************************************************************\
|
|
|
|
* The hardware vector addresses *
|
|
|
|
* The hardware vector addresses *
|
|
|
|
\***************************************************************************/
|
|
|
|
\***************************************************************************/
|
|
|
@ -167,7 +148,6 @@ enum {
|
|
|
|
* Definitions of things in the emulator *
|
|
|
|
* Definitions of things in the emulator *
|
|
|
|
\***************************************************************************/
|
|
|
|
\***************************************************************************/
|
|
|
|
void ARMul_Reset(ARMul_State* state);
|
|
|
|
void ARMul_Reset(ARMul_State* state);
|
|
|
|
ARMul_State* ARMul_NewState(ARMul_State* state);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/***************************************************************************\
|
|
|
|
/***************************************************************************\
|
|
|
|
* Definitions of things in the co-processor interface *
|
|
|
|
* Definitions of things in the co-processor interface *
|
|
|
|