⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpu.h

📁 xen虚拟机源代码安装包
💻 H
📖 第 1 页 / 共 2 页
字号:
#if !defined (__MIPS_CPU_H__)#define __MIPS_CPU_H__#define TARGET_HAS_ICE 1#define ELF_MACHINE	EM_MIPS#include "config.h"#include "mips-defs.h"#include "cpu-defs.h"#include "softfloat.h"// uint_fast8_t and uint_fast16_t not in <sys/int_types.h>// XXX: move that elsewhere#if defined(HOST_SOLARIS) && HOST_SOLARIS < 10typedef unsigned char           uint_fast8_t;typedef unsigned int            uint_fast16_t;#endifstruct CPUMIPSState;typedef struct r4k_tlb_t r4k_tlb_t;struct r4k_tlb_t {    target_ulong VPN;    uint32_t PageMask;    uint_fast8_t ASID;    uint_fast16_t G:1;    uint_fast16_t C0:3;    uint_fast16_t C1:3;    uint_fast16_t V0:1;    uint_fast16_t V1:1;    uint_fast16_t D0:1;    uint_fast16_t D1:1;    target_ulong PFN[2];};typedef struct CPUMIPSTLBContext CPUMIPSTLBContext;struct CPUMIPSTLBContext {    uint32_t nb_tlb;    uint32_t tlb_in_use;    int (*map_address) (struct CPUMIPSState *env, target_ulong *physical, int *prot, target_ulong address, int rw, int access_type);    void (*do_tlbwi) (void);    void (*do_tlbwr) (void);    void (*do_tlbp) (void);    void (*do_tlbr) (void);    union {        struct {            r4k_tlb_t tlb[MIPS_TLB_MAX];        } r4k;    } mmu;};typedef union fpr_t fpr_t;union fpr_t {    float64  fd;   /* ieee double precision */    float32  fs[2];/* ieee single precision */    uint64_t d;    /* binary double fixed-point */    uint32_t w[2]; /* binary single fixed-point */};/* define FP_ENDIAN_IDX to access the same location * in the fpr_t union regardless of the host endianess */#if defined(WORDS_BIGENDIAN)#  define FP_ENDIAN_IDX 1#else#  define FP_ENDIAN_IDX 0#endiftypedef struct CPUMIPSFPUContext CPUMIPSFPUContext;struct CPUMIPSFPUContext {    /* Floating point registers */    fpr_t fpr[32];#ifndef USE_HOST_FLOAT_REGS    fpr_t ft0;    fpr_t ft1;    fpr_t ft2;#endif    float_status fp_status;    /* fpu implementation/revision register (fir) */    uint32_t fcr0;#define FCR0_F64 22#define FCR0_L 21#define FCR0_W 20#define FCR0_3D 19#define FCR0_PS 18#define FCR0_D 17#define FCR0_S 16#define FCR0_PRID 8#define FCR0_REV 0    /* fcsr */    uint32_t fcr31;#define SET_FP_COND(num,env)     do { ((env)->fcr31) |= ((num) ? (1 << ((num) + 24)) : (1 << 23)); } while(0)#define CLEAR_FP_COND(num,env)   do { ((env)->fcr31) &= ~((num) ? (1 << ((num) + 24)) : (1 << 23)); } while(0)#define GET_FP_COND(env)         ((((env)->fcr31 >> 24) & 0xfe) | (((env)->fcr31 >> 23) & 0x1))#define GET_FP_CAUSE(reg)        (((reg) >> 12) & 0x3f)#define GET_FP_ENABLE(reg)       (((reg) >>  7) & 0x1f)#define GET_FP_FLAGS(reg)        (((reg) >>  2) & 0x1f)#define SET_FP_CAUSE(reg,v)      do { (reg) = ((reg) & ~(0x3f << 12)) | ((v & 0x3f) << 12); } while(0)#define SET_FP_ENABLE(reg,v)     do { (reg) = ((reg) & ~(0x1f <<  7)) | ((v & 0x1f) << 7); } while(0)#define SET_FP_FLAGS(reg,v)      do { (reg) = ((reg) & ~(0x1f <<  2)) | ((v & 0x1f) << 2); } while(0)#define UPDATE_FP_FLAGS(reg,v)   do { (reg) |= ((v & 0x1f) << 2); } while(0)#define FP_INEXACT        1#define FP_UNDERFLOW      2#define FP_OVERFLOW       4#define FP_DIV0           8#define FP_INVALID        16#define FP_UNIMPLEMENTED  32};#define NB_MMU_MODES 3typedef struct CPUMIPSMVPContext CPUMIPSMVPContext;struct CPUMIPSMVPContext {    int32_t CP0_MVPControl;#define CP0MVPCo_CPA	3#define CP0MVPCo_STLB	2#define CP0MVPCo_VPC	1#define CP0MVPCo_EVP	0    int32_t CP0_MVPConf0;#define CP0MVPC0_M	31#define CP0MVPC0_TLBS	29#define CP0MVPC0_GS	28#define CP0MVPC0_PCP	27#define CP0MVPC0_PTLBE	16#define CP0MVPC0_TCA	15#define CP0MVPC0_PVPE	10#define CP0MVPC0_PTC	0    int32_t CP0_MVPConf1;#define CP0MVPC1_CIM	31#define CP0MVPC1_CIF	30#define CP0MVPC1_PCX	20#define CP0MVPC1_PCP2	10#define CP0MVPC1_PCP1	0};typedef struct mips_def_t mips_def_t;#define MIPS_SHADOW_SET_MAX 16#define MIPS_TC_MAX 5#define MIPS_DSP_ACC 4typedef struct CPUMIPSState CPUMIPSState;struct CPUMIPSState {    /* General integer registers */    target_ulong gpr[MIPS_SHADOW_SET_MAX][32];    /* Special registers */    target_ulong PC[MIPS_TC_MAX];#if TARGET_LONG_BITS > HOST_LONG_BITS    target_ulong t0;    target_ulong t1;#endif    target_ulong HI[MIPS_TC_MAX][MIPS_DSP_ACC];    target_ulong LO[MIPS_TC_MAX][MIPS_DSP_ACC];    target_ulong ACX[MIPS_TC_MAX][MIPS_DSP_ACC];    target_ulong DSPControl[MIPS_TC_MAX];    CPUMIPSMVPContext *mvp;    CPUMIPSTLBContext *tlb;    CPUMIPSFPUContext *fpu;    uint32_t current_tc;    target_ulong *current_tc_gprs;    uint32_t SEGBITS;    target_ulong SEGMask;    uint32_t PABITS;    target_ulong PAMask;    int32_t CP0_Index;    /* CP0_MVP* are per MVP registers. */    int32_t CP0_Random;    int32_t CP0_VPEControl;#define CP0VPECo_YSI	21#define CP0VPECo_GSI	20#define CP0VPECo_EXCPT	16#define CP0VPECo_TE	15#define CP0VPECo_TargTC	0    int32_t CP0_VPEConf0;#define CP0VPEC0_M	31#define CP0VPEC0_XTC	21#define CP0VPEC0_TCS	19#define CP0VPEC0_SCS	18#define CP0VPEC0_DSC	17#define CP0VPEC0_ICS	16#define CP0VPEC0_MVP	1#define CP0VPEC0_VPA	0    int32_t CP0_VPEConf1;#define CP0VPEC1_NCX	20#define CP0VPEC1_NCP2	10#define CP0VPEC1_NCP1	0    target_ulong CP0_YQMask;    target_ulong CP0_VPESchedule;    target_ulong CP0_VPEScheFBack;    int32_t CP0_VPEOpt;#define CP0VPEOpt_IWX7	15#define CP0VPEOpt_IWX6	14#define CP0VPEOpt_IWX5	13#define CP0VPEOpt_IWX4	12#define CP0VPEOpt_IWX3	11#define CP0VPEOpt_IWX2	10#define CP0VPEOpt_IWX1	9#define CP0VPEOpt_IWX0	8#define CP0VPEOpt_DWX7	7#define CP0VPEOpt_DWX6	6#define CP0VPEOpt_DWX5	5#define CP0VPEOpt_DWX4	4#define CP0VPEOpt_DWX3	3#define CP0VPEOpt_DWX2	2#define CP0VPEOpt_DWX1	1#define CP0VPEOpt_DWX0	0    target_ulong CP0_EntryLo0;    int32_t CP0_TCStatus[MIPS_TC_MAX];#define CP0TCSt_TCU3	31#define CP0TCSt_TCU2	30#define CP0TCSt_TCU1	29#define CP0TCSt_TCU0	28#define CP0TCSt_TMX	27#define CP0TCSt_RNST	23#define CP0TCSt_TDS	21#define CP0TCSt_DT	20#define CP0TCSt_DA	15#define CP0TCSt_A	13#define CP0TCSt_TKSU	11#define CP0TCSt_IXMT	10#define CP0TCSt_TASID	0    int32_t CP0_TCBind[MIPS_TC_MAX];#define CP0TCBd_CurTC	21#define CP0TCBd_TBE	17#define CP0TCBd_CurVPE	0    target_ulong CP0_TCHalt[MIPS_TC_MAX];    target_ulong CP0_TCContext[MIPS_TC_MAX];    target_ulong CP0_TCSchedule[MIPS_TC_MAX];    target_ulong CP0_TCScheFBack[MIPS_TC_MAX];    target_ulong CP0_EntryLo1;    target_ulong CP0_Context;    int32_t CP0_PageMask;    int32_t CP0_PageGrain;    int32_t CP0_Wired;    int32_t CP0_SRSConf0_rw_bitmask;    int32_t CP0_SRSConf0;#define CP0SRSC0_M	31#define CP0SRSC0_SRS3	20#define CP0SRSC0_SRS2	10#define CP0SRSC0_SRS1	0    int32_t CP0_SRSConf1_rw_bitmask;    int32_t CP0_SRSConf1;#define CP0SRSC1_M	31#define CP0SRSC1_SRS6	20#define CP0SRSC1_SRS5	10#define CP0SRSC1_SRS4	0    int32_t CP0_SRSConf2_rw_bitmask;    int32_t CP0_SRSConf2;#define CP0SRSC2_M	31#define CP0SRSC2_SRS9	20#define CP0SRSC2_SRS8	10#define CP0SRSC2_SRS7	0    int32_t CP0_SRSConf3_rw_bitmask;    int32_t CP0_SRSConf3;#define CP0SRSC3_M	31#define CP0SRSC3_SRS12	20#define CP0SRSC3_SRS11	10#define CP0SRSC3_SRS10	0    int32_t CP0_SRSConf4_rw_bitmask;    int32_t CP0_SRSConf4;#define CP0SRSC4_SRS15	20#define CP0SRSC4_SRS14	10#define CP0SRSC4_SRS13	0    int32_t CP0_HWREna;    target_ulong CP0_BadVAddr;    int32_t CP0_Count;    target_ulong CP0_EntryHi;    int32_t CP0_Compare;    int32_t CP0_Status;#define CP0St_CU3   31#define CP0St_CU2   30#define CP0St_CU1   29#define CP0St_CU0   28#define CP0St_RP    27#define CP0St_FR    26#define CP0St_RE    25#define CP0St_MX    24#define CP0St_PX    23#define CP0St_BEV   22#define CP0St_TS    21#define CP0St_SR    20#define CP0St_NMI   19

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -