arm: General cleanup
- Remove several typedefs for ARMul_State. - Remove unused functions - Remove unused/unnecessary headers - Removed unused enums, etc.
This commit is contained in:
parent
9b69079c83
commit
a75e1ff6e6
13 changed files with 116 additions and 227 deletions
|
@ -17,19 +17,9 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <cerrno>
|
||||
#include <csignal>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include "arm_regformat.h"
|
||||
#include "common/common_types.h"
|
||||
#include "common/platform.h"
|
||||
#include "core/arm/skyeye_common/armmmu.h"
|
||||
#include "core/arm/skyeye_common/arm_regformat.h"
|
||||
#include "core/arm/skyeye_common/skyeye_defs.h"
|
||||
|
||||
#define BITS(s, a, b) ((s << ((sizeof(s) * 8 - 1) - b)) >> (sizeof(s) * 8 - b + a - 1))
|
||||
|
@ -118,9 +108,7 @@ struct ARMul_State
|
|||
// Add armv6 flags dyf:2010-08-09
|
||||
ARMword GEFlag, EFlag, AFlag, QFlag;
|
||||
|
||||
#ifdef MODET
|
||||
ARMword TFlag; // Thumb state
|
||||
#endif
|
||||
|
||||
unsigned long long NumInstrs; // The number of instructions executed
|
||||
unsigned NumInstrsToExecute;
|
||||
|
@ -218,8 +206,6 @@ So, if lateabtSig=1, then it means Late Abort Model(Base Updated Abort Model)
|
|||
u32 CurrWrite;
|
||||
};
|
||||
|
||||
typedef ARMul_State arm_core_t;
|
||||
|
||||
/***************************************************************************\
|
||||
* Types of ARM we know about *
|
||||
\***************************************************************************/
|
||||
|
|
|
@ -19,61 +19,24 @@
|
|||
|
||||
#include "core/arm/skyeye_common/armdefs.h"
|
||||
|
||||
/* Macros to twiddle the status flags and mode. */
|
||||
#define NBIT ((unsigned)1L << 31)
|
||||
#define ZBIT (1L << 30)
|
||||
#define CBIT (1L << 29)
|
||||
#define VBIT (1L << 28)
|
||||
#define QBIT (1L << 27)
|
||||
#define IBIT (1L << 7)
|
||||
#define FBIT (1L << 6)
|
||||
#define IFBITS (3L << 6)
|
||||
#define R15IBIT (1L << 27)
|
||||
#define R15FBIT (1L << 26)
|
||||
#define R15IFBITS (3L << 26)
|
||||
// Flags for use with the APSR.
|
||||
enum : u32 {
|
||||
NBIT = (1U << 31U),
|
||||
ZBIT = (1 << 30),
|
||||
CBIT = (1 << 29),
|
||||
VBIT = (1 << 28),
|
||||
QBIT = (1 << 27),
|
||||
JBIT = (1 << 24),
|
||||
EBIT = (1 << 9),
|
||||
ABIT = (1 << 8),
|
||||
IBIT = (1 << 7),
|
||||
FBIT = (1 << 6),
|
||||
TBIT = (1 << 5),
|
||||
|
||||
#if defined MODE32 || defined MODET
|
||||
#define CCBITS (0xf8000000L)
|
||||
#else
|
||||
#define CCBITS (0xf0000000L)
|
||||
#endif
|
||||
|
||||
#define INTBITS (0xc0L)
|
||||
|
||||
#if defined MODET && defined MODE32
|
||||
#define PCBITS (0xffffffffL)
|
||||
#else
|
||||
#define PCBITS (0xfffffffcL)
|
||||
#endif
|
||||
|
||||
#define MODEBITS (0x1fL)
|
||||
#define R15INTBITS (3L << 26)
|
||||
|
||||
#if defined MODET && defined MODE32
|
||||
#define R15PCBITS (0x03ffffffL)
|
||||
#else
|
||||
#define R15PCBITS (0x03fffffcL)
|
||||
#endif
|
||||
|
||||
#define R15MODEBITS (0x3L)
|
||||
|
||||
#ifdef MODE32
|
||||
#define PCMASK PCBITS
|
||||
#define PCWRAP(pc) (pc)
|
||||
#else
|
||||
#define PCMASK R15PCBITS
|
||||
#define PCWRAP(pc) ((pc) & R15PCBITS)
|
||||
#endif
|
||||
|
||||
#define PC (state->Reg[15] & PCMASK)
|
||||
#define R15CCINTMODE (state->Reg[15] & (CCBITS | R15INTBITS | R15MODEBITS))
|
||||
#define R15INT (state->Reg[15] & R15INTBITS)
|
||||
#define R15INTPC (state->Reg[15] & (R15INTBITS | R15PCBITS))
|
||||
#define R15INTPCMODE (state->Reg[15] & (R15INTBITS | R15PCBITS | R15MODEBITS))
|
||||
#define R15INTMODE (state->Reg[15] & (R15INTBITS | R15MODEBITS))
|
||||
#define R15PC (state->Reg[15] & R15PCBITS)
|
||||
#define R15PCMODE (state->Reg[15] & (R15PCBITS | R15MODEBITS))
|
||||
#define R15MODE (state->Reg[15] & R15MODEBITS)
|
||||
// Masks for groups of bits in the APSR.
|
||||
MODEBITS = 0x1F,
|
||||
INTBITS = 0xC0,
|
||||
};
|
||||
|
||||
// Different ways to start the next instruction.
|
||||
enum {
|
||||
|
|
|
@ -1,57 +1,38 @@
|
|||
#pragma once
|
||||
|
||||
#include "common/common.h"
|
||||
#include "common/common_types.h"
|
||||
|
||||
#define MODE32
|
||||
#define MODET
|
||||
|
||||
typedef struct
|
||||
struct cpu_config_t
|
||||
{
|
||||
const char *cpu_arch_name; /* CPU architecture version name.e.g. armv4t */
|
||||
const char *cpu_name; /* CPU name. e.g. arm7tdmi or arm720t */
|
||||
u32 cpu_val; /*CPU value; also call MMU ID or processor id;see
|
||||
ARM Architecture Reference Manual B2-6 */
|
||||
u32 cpu_mask; /* cpu_val's mask. */
|
||||
u32 cachetype; /* this CPU has what kind of cache */
|
||||
} cpu_config_t;
|
||||
const char* cpu_arch_name; // CPU architecture version name.e.g. ARMv4T
|
||||
const char* cpu_name; // CPU name. e.g. ARM7TDMI or ARM720T
|
||||
u32 cpu_val; // CPU value; also call MMU ID or processor id;see
|
||||
// ARM Architecture Reference Manual B2-6
|
||||
u32 cpu_mask; // cpu_val's mask.
|
||||
u32 cachetype; // CPU cache type
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
/* No exception */
|
||||
No_exp = 0,
|
||||
/* Memory allocation exception */
|
||||
Malloc_exp,
|
||||
/* File open exception */
|
||||
File_open_exp,
|
||||
/* DLL open exception */
|
||||
Dll_open_exp,
|
||||
/* Invalid argument exception */
|
||||
Invarg_exp,
|
||||
/* Invalid module exception */
|
||||
Invmod_exp,
|
||||
/* wrong format exception for config file parsing */
|
||||
Conf_format_exp,
|
||||
/* some reference excess the predefiend range. Such as the index out of array range */
|
||||
Excess_range_exp,
|
||||
/* Can not find the desirable result */
|
||||
Not_found_exp,
|
||||
|
||||
/* Unknown exception */
|
||||
Unknown_exp
|
||||
} exception_t;
|
||||
|
||||
typedef enum {
|
||||
Align = 0,
|
||||
UnAlign
|
||||
} align_t;
|
||||
|
||||
typedef enum {
|
||||
Little_endian = 0,
|
||||
Big_endian
|
||||
} endian_t;
|
||||
|
||||
typedef enum {
|
||||
Phys_addr = 0,
|
||||
Virt_addr
|
||||
} addr_type_t;
|
||||
enum {
|
||||
// No exception
|
||||
No_exp = 0,
|
||||
// Memory allocation exception
|
||||
Malloc_exp,
|
||||
// File open exception
|
||||
File_open_exp,
|
||||
// DLL open exception
|
||||
Dll_open_exp,
|
||||
// Invalid argument exception
|
||||
Invarg_exp,
|
||||
// Invalid module exception
|
||||
Invmod_exp,
|
||||
// wrong format exception for config file parsing
|
||||
Conf_format_exp,
|
||||
// some reference excess the predefiend range. Such as the index out of array range
|
||||
Excess_range_exp,
|
||||
// Can not find the desirable result
|
||||
Not_found_exp,
|
||||
// Unknown exception
|
||||
Unknown_exp
|
||||
};
|
||||
|
||||
typedef u32 addr_t;
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
/* Note: this file handles interface with arm core and vfp registers */
|
||||
|
||||
#include "common/common.h"
|
||||
#include "common/logging/log.h"
|
||||
|
||||
#include "core/arm/skyeye_common/armdefs.h"
|
||||
#include "core/arm/skyeye_common/vfp/asm_vfp.h"
|
||||
|
@ -724,26 +725,26 @@ void VMOVR(ARMul_State* state, ARMword single, ARMword d, ARMword m)
|
|||
}
|
||||
|
||||
/* Miscellaneous functions */
|
||||
int32_t vfp_get_float(arm_core_t* state, unsigned int reg)
|
||||
int32_t vfp_get_float(ARMul_State* state, unsigned int reg)
|
||||
{
|
||||
LOG_TRACE(Core_ARM11, "VFP get float: s%d=[%08x]\n", reg, state->ExtReg[reg]);
|
||||
return state->ExtReg[reg];
|
||||
}
|
||||
|
||||
void vfp_put_float(arm_core_t* state, int32_t val, unsigned int reg)
|
||||
void vfp_put_float(ARMul_State* state, int32_t val, unsigned int reg)
|
||||
{
|
||||
LOG_TRACE(Core_ARM11, "VFP put float: s%d <= [%08x]\n", reg, val);
|
||||
state->ExtReg[reg] = val;
|
||||
}
|
||||
|
||||
uint64_t vfp_get_double(arm_core_t* state, unsigned int reg)
|
||||
uint64_t vfp_get_double(ARMul_State* state, unsigned int reg)
|
||||
{
|
||||
uint64_t result = ((uint64_t) state->ExtReg[reg*2+1])<<32 | state->ExtReg[reg*2];
|
||||
LOG_TRACE(Core_ARM11, "VFP get double: s[%d-%d]=[%016llx]\n", reg * 2 + 1, reg * 2, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
void vfp_put_double(arm_core_t* state, uint64_t val, unsigned int reg)
|
||||
void vfp_put_double(ARMul_State* state, uint64_t val, unsigned int reg)
|
||||
{
|
||||
LOG_TRACE(Core_ARM11, "VFP put double: s[%d-%d] <= [%08x-%08x]\n", reg * 2 + 1, reg * 2, (uint32_t)(val >> 32), (uint32_t)(val & 0xffffffff));
|
||||
state->ExtReg[reg*2] = (uint32_t) (val & 0xffffffff);
|
||||
|
|
|
@ -32,11 +32,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
/* Custom edit */
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <cstdio>
|
||||
#include "common/common_types.h"
|
||||
#include "core/arm/skyeye_common/armdefs.h"
|
||||
|
||||
|
|
|
@ -51,6 +51,7 @@
|
|||
* ===========================================================================
|
||||
*/
|
||||
|
||||
#include "common/logging/log.h"
|
||||
#include "core/arm/skyeye_common/vfp/vfp.h"
|
||||
#include "core/arm/skyeye_common/vfp/vfp_helper.h"
|
||||
#include "core/arm/skyeye_common/vfp/asm_vfp.h"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue