|
|
1.1 ! root 1: #if !defined(__QEMU_MIPS_EXEC_H__) ! 2: #define __QEMU_MIPS_EXEC_H__ ! 3: ! 4: #define DEBUG_OP ! 5: ! 6: #include "mips-defs.h" ! 7: #include "dyngen-exec.h" ! 8: ! 9: register struct CPUMIPSState *env asm(AREG0); ! 10: ! 11: #if defined (USE_64BITS_REGS) ! 12: typedef int64_t host_int_t; ! 13: typedef uint64_t host_uint_t; ! 14: #else ! 15: typedef int32_t host_int_t; ! 16: typedef uint32_t host_uint_t; ! 17: #endif ! 18: ! 19: register host_uint_t T0 asm(AREG1); ! 20: register host_uint_t T1 asm(AREG2); ! 21: register host_uint_t T2 asm(AREG3); ! 22: ! 23: #if defined (USE_HOST_FLOAT_REGS) ! 24: register double FT0 asm(FREG0); ! 25: register double FT1 asm(FREG1); ! 26: register double FT2 asm(FREG2); ! 27: #else ! 28: #define FT0 (env->ft0.d) ! 29: #define FT1 (env->ft1.d) ! 30: #define FT2 (env->ft2.d) ! 31: #endif ! 32: ! 33: #if defined (DEBUG_OP) ! 34: #define RETURN() __asm__ __volatile__("nop"); ! 35: #else ! 36: #define RETURN() __asm__ __volatile__(""); ! 37: #endif ! 38: ! 39: #include "cpu.h" ! 40: #include "exec-all.h" ! 41: ! 42: #if !defined(CONFIG_USER_ONLY) ! 43: ! 44: #define ldul_user ldl_user ! 45: #define ldul_kernel ldl_kernel ! 46: ! 47: #define ACCESS_TYPE 0 ! 48: #define MEMSUFFIX _kernel ! 49: #define DATA_SIZE 1 ! 50: #include "softmmu_header.h" ! 51: ! 52: #define DATA_SIZE 2 ! 53: #include "softmmu_header.h" ! 54: ! 55: #define DATA_SIZE 4 ! 56: #include "softmmu_header.h" ! 57: ! 58: #define DATA_SIZE 8 ! 59: #include "softmmu_header.h" ! 60: #undef ACCESS_TYPE ! 61: #undef MEMSUFFIX ! 62: ! 63: #define ACCESS_TYPE 1 ! 64: #define MEMSUFFIX _user ! 65: #define DATA_SIZE 1 ! 66: #include "softmmu_header.h" ! 67: ! 68: #define DATA_SIZE 2 ! 69: #include "softmmu_header.h" ! 70: ! 71: #define DATA_SIZE 4 ! 72: #include "softmmu_header.h" ! 73: ! 74: #define DATA_SIZE 8 ! 75: #include "softmmu_header.h" ! 76: #undef ACCESS_TYPE ! 77: #undef MEMSUFFIX ! 78: ! 79: /* these access are slower, they must be as rare as possible */ ! 80: #define ACCESS_TYPE 2 ! 81: #define MEMSUFFIX _data ! 82: #define DATA_SIZE 1 ! 83: #include "softmmu_header.h" ! 84: ! 85: #define DATA_SIZE 2 ! 86: #include "softmmu_header.h" ! 87: ! 88: #define DATA_SIZE 4 ! 89: #include "softmmu_header.h" ! 90: ! 91: #define DATA_SIZE 8 ! 92: #include "softmmu_header.h" ! 93: #undef ACCESS_TYPE ! 94: #undef MEMSUFFIX ! 95: ! 96: #define ldub(p) ldub_data(p) ! 97: #define ldsb(p) ldsb_data(p) ! 98: #define lduw(p) lduw_data(p) ! 99: #define ldsw(p) ldsw_data(p) ! 100: #define ldl(p) ldl_data(p) ! 101: #define ldq(p) ldq_data(p) ! 102: ! 103: #define stb(p, v) stb_data(p, v) ! 104: #define stw(p, v) stw_data(p, v) ! 105: #define stl(p, v) stl_data(p, v) ! 106: #define stq(p, v) stq_data(p, v) ! 107: ! 108: #endif /* !defined(CONFIG_USER_ONLY) */ ! 109: ! 110: static inline void env_to_regs(void) ! 111: { ! 112: } ! 113: ! 114: static inline void regs_to_env(void) ! 115: { ! 116: } ! 117: ! 118: #if (HOST_LONG_BITS == 32) ! 119: void do_mult (void); ! 120: void do_multu (void); ! 121: void do_madd (void); ! 122: void do_maddu (void); ! 123: void do_msub (void); ! 124: void do_msubu (void); ! 125: #endif ! 126: void do_mfc0(int reg, int sel); ! 127: void do_mtc0(int reg, int sel); ! 128: void do_tlbwi (void); ! 129: void do_tlbwr (void); ! 130: void do_tlbp (void); ! 131: void do_tlbr (void); ! 132: void do_lwl_raw (void); ! 133: void do_lwr_raw (void); ! 134: void do_swl_raw (void); ! 135: void do_swr_raw (void); ! 136: #if !defined(CONFIG_USER_ONLY) ! 137: void do_lwl_user (void); ! 138: void do_lwl_kernel (void); ! 139: void do_lwr_user (void); ! 140: void do_lwr_kernel (void); ! 141: void do_swl_user (void); ! 142: void do_swl_kernel (void); ! 143: void do_swr_user (void); ! 144: void do_swr_kernel (void); ! 145: #endif ! 146: void do_pmon (int function); ! 147: ! 148: int cpu_mips_handle_mmu_fault (CPUState *env, target_ulong address, int rw, ! 149: int is_user, int is_softmmu); ! 150: void do_interrupt (CPUState *env); ! 151: ! 152: void cpu_loop_exit(void); ! 153: void do_raise_exception_err (uint32_t exception, int error_code); ! 154: void do_raise_exception (uint32_t exception); ! 155: ! 156: void cpu_dump_state(CPUState *env, FILE *f, ! 157: int (*cpu_fprintf)(FILE *f, const char *fmt, ...), ! 158: int flags); ! 159: void cpu_mips_irqctrl_init (void); ! 160: uint32_t cpu_mips_get_random (CPUState *env); ! 161: uint32_t cpu_mips_get_count (CPUState *env); ! 162: void cpu_mips_store_count (CPUState *env, uint32_t value); ! 163: void cpu_mips_store_compare (CPUState *env, uint32_t value); ! 164: void cpu_mips_clock_init (CPUState *env); ! 165: ! 166: #endif /* !defined(__QEMU_MIPS_EXEC_H__) */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.