mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 01:33:56 -06:00
exec: Change cpu_abort() argument to CPUState
Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
bb0e627a84
commit
a47dddd734
41 changed files with 301 additions and 206 deletions
|
@ -229,26 +229,22 @@ void helper_cp1_putc(target_ulong x)
|
|||
#ifdef CONFIG_USER_ONLY
|
||||
void switch_mode(CPUUniCore32State *env, int mode)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
|
||||
if (mode != ASR_MODE_USER) {
|
||||
cpu_abort(env, "Tried to switch out of user mode\n");
|
||||
cpu_abort(CPU(cpu), "Tried to switch out of user mode\n");
|
||||
}
|
||||
}
|
||||
|
||||
void uc32_cpu_do_interrupt(CPUState *cs)
|
||||
{
|
||||
UniCore32CPU *cpu = UNICORE32_CPU(cs);
|
||||
CPUUniCore32State *env = &cpu->env;
|
||||
|
||||
cpu_abort(env, "NO interrupt in user mode\n");
|
||||
cpu_abort(cs, "NO interrupt in user mode\n");
|
||||
}
|
||||
|
||||
int uc32_cpu_handle_mmu_fault(CPUState *cs, vaddr address,
|
||||
int access_type, int mmu_idx)
|
||||
{
|
||||
UniCore32CPU *cpu = UNICORE32_CPU(cs);
|
||||
CPUUniCore32State *env = &cpu->env;
|
||||
|
||||
cpu_abort(env, "NO mmu fault in user mode\n");
|
||||
cpu_abort(cs, "NO mmu fault in user mode\n");
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -33,6 +33,8 @@
|
|||
/* Map CPU modes onto saved register banks. */
|
||||
static inline int bank_number(CPUUniCore32State *env, int mode)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
|
||||
switch (mode) {
|
||||
case ASR_MODE_USER:
|
||||
case ASR_MODE_SUSR:
|
||||
|
@ -46,7 +48,7 @@ static inline int bank_number(CPUUniCore32State *env, int mode)
|
|||
case ASR_MODE_INTR:
|
||||
return 4;
|
||||
}
|
||||
cpu_abort(env, "Bad mode %x\n", mode);
|
||||
cpu_abort(CPU(cpu), "Bad mode %x\n", mode);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -99,7 +101,7 @@ void uc32_cpu_do_interrupt(CPUState *cs)
|
|||
addr = 0x18;
|
||||
break;
|
||||
default:
|
||||
cpu_abort(env, "Unhandled exception 0x%x\n", cs->exception_index);
|
||||
cpu_abort(cs, "Unhandled exception 0x%x\n", cs->exception_index);
|
||||
return;
|
||||
}
|
||||
/* High vectors. */
|
||||
|
@ -121,7 +123,8 @@ static int get_phys_addr_ucv2(CPUUniCore32State *env, uint32_t address,
|
|||
int access_type, int is_user, uint32_t *phys_ptr, int *prot,
|
||||
target_ulong *page_size)
|
||||
{
|
||||
CPUState *cs = CPU(uc32_env_get_cpu(env));
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
CPUState *cs = CPU(cpu);
|
||||
int code;
|
||||
uint32_t table;
|
||||
uint32_t desc;
|
||||
|
@ -168,11 +171,11 @@ static int get_phys_addr_ucv2(CPUUniCore32State *env, uint32_t address,
|
|||
*page_size = TARGET_PAGE_SIZE;
|
||||
break;
|
||||
default:
|
||||
cpu_abort(env, "wrong page type!");
|
||||
cpu_abort(CPU(cpu), "wrong page type!");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
cpu_abort(env, "wrong page type!");
|
||||
cpu_abort(CPU(cpu), "wrong page type!");
|
||||
}
|
||||
|
||||
*phys_ptr = phys_addr;
|
||||
|
@ -268,6 +271,6 @@ hwaddr uc32_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
|
|||
{
|
||||
UniCore32CPU *cpu = UNICORE32_CPU(cs);
|
||||
|
||||
cpu_abort(&cpu->env, "%s not supported yet\n", __func__);
|
||||
cpu_abort(CPU(cpu), "%s not supported yet\n", __func__);
|
||||
return addr;
|
||||
}
|
||||
|
|
|
@ -176,7 +176,7 @@ static void store_reg(DisasContext *s, int reg, TCGv var)
|
|||
#define UCOP_SET_L UCOP_SET(24)
|
||||
#define UCOP_SET_S UCOP_SET(24)
|
||||
|
||||
#define ILLEGAL cpu_abort(env, \
|
||||
#define ILLEGAL cpu_abort(CPU(cpu), \
|
||||
"Illegal UniCore32 instruction %x at line %d!", \
|
||||
insn, __LINE__)
|
||||
|
||||
|
@ -184,6 +184,7 @@ static void store_reg(DisasContext *s, int reg, TCGv var)
|
|||
static void disas_cp0_insn(CPUUniCore32State *env, DisasContext *s,
|
||||
uint32_t insn)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
TCGv tmp, tmp2, tmp3;
|
||||
if ((insn & 0xfe000000) == 0xe0000000) {
|
||||
tmp2 = new_tmp();
|
||||
|
@ -209,6 +210,7 @@ static void disas_cp0_insn(CPUUniCore32State *env, DisasContext *s,
|
|||
static void disas_ocd_insn(CPUUniCore32State *env, DisasContext *s,
|
||||
uint32_t insn)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
TCGv tmp;
|
||||
|
||||
if ((insn & 0xff003fff) == 0xe1000400) {
|
||||
|
@ -689,6 +691,7 @@ static inline long ucf64_reg_offset(int reg)
|
|||
/* UniCore-F64 single load/store I_offset */
|
||||
static void do_ucf64_ldst_i(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
int offset;
|
||||
TCGv tmp;
|
||||
TCGv addr;
|
||||
|
@ -735,6 +738,7 @@ static void do_ucf64_ldst_i(CPUUniCore32State *env, DisasContext *s, uint32_t in
|
|||
/* UniCore-F64 load/store multiple words */
|
||||
static void do_ucf64_ldst_m(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
unsigned int i;
|
||||
int j, n, freg;
|
||||
TCGv tmp;
|
||||
|
@ -820,6 +824,7 @@ static void do_ucf64_ldst_m(CPUUniCore32State *env, DisasContext *s, uint32_t in
|
|||
/* UniCore-F64 mrc/mcr */
|
||||
static void do_ucf64_trans(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
TCGv tmp;
|
||||
|
||||
if ((insn & 0xfe0003ff) == 0xe2000000) {
|
||||
|
@ -884,6 +889,8 @@ static void do_ucf64_trans(CPUUniCore32State *env, DisasContext *s, uint32_t ins
|
|||
/* UniCore-F64 convert instructions */
|
||||
static void do_ucf64_fcvt(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
|
||||
if (UCOP_UCF64_FMT == 3) {
|
||||
ILLEGAL;
|
||||
}
|
||||
|
@ -950,6 +957,8 @@ static void do_ucf64_fcvt(CPUUniCore32State *env, DisasContext *s, uint32_t insn
|
|||
/* UniCore-F64 compare instructions */
|
||||
static void do_ucf64_fcmp(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
|
||||
if (UCOP_SET(25)) {
|
||||
ILLEGAL;
|
||||
}
|
||||
|
@ -1028,6 +1037,8 @@ static void do_ucf64_fcmp(CPUUniCore32State *env, DisasContext *s, uint32_t insn
|
|||
/* UniCore-F64 data processing */
|
||||
static void do_ucf64_datap(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
|
||||
if (UCOP_UCF64_FMT == 3) {
|
||||
ILLEGAL;
|
||||
}
|
||||
|
@ -1061,6 +1072,8 @@ static void do_ucf64_datap(CPUUniCore32State *env, DisasContext *s, uint32_t ins
|
|||
/* Disassemble an F64 instruction */
|
||||
static void disas_ucf64_insn(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
|
||||
if (!UCOP_SET(29)) {
|
||||
if (UCOP_SET(26)) {
|
||||
do_ucf64_ldst_m(env, s, insn);
|
||||
|
@ -1167,6 +1180,8 @@ static void gen_exception_return(DisasContext *s, TCGv pc)
|
|||
static void disas_coproc_insn(CPUUniCore32State *env, DisasContext *s,
|
||||
uint32_t insn)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
|
||||
switch (UCOP_CPNUM) {
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
case 0:
|
||||
|
@ -1181,13 +1196,14 @@ static void disas_coproc_insn(CPUUniCore32State *env, DisasContext *s,
|
|||
break;
|
||||
default:
|
||||
/* Unknown coprocessor. */
|
||||
cpu_abort(env, "Unknown coprocessor!");
|
||||
cpu_abort(CPU(cpu), "Unknown coprocessor!");
|
||||
}
|
||||
}
|
||||
|
||||
/* data processing instructions */
|
||||
static void do_datap(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
TCGv tmp;
|
||||
TCGv tmp2;
|
||||
int logic_cc;
|
||||
|
@ -1421,6 +1437,7 @@ static void do_mult(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
|||
/* miscellaneous instructions */
|
||||
static void do_misc(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
unsigned int val;
|
||||
TCGv tmp;
|
||||
|
||||
|
@ -1546,6 +1563,7 @@ static void do_ldst_ir(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
|||
/* SWP instruction */
|
||||
static void do_swap(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
TCGv addr;
|
||||
TCGv tmp;
|
||||
TCGv tmp2;
|
||||
|
@ -1573,6 +1591,7 @@ static void do_swap(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
|||
/* load/store hw/sb */
|
||||
static void do_ldst_hwsb(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
TCGv addr;
|
||||
TCGv tmp;
|
||||
|
||||
|
@ -1625,6 +1644,7 @@ static void do_ldst_hwsb(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
|||
/* load/store multiple words */
|
||||
static void do_ldst_m(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
unsigned int val, i, mmu_idx;
|
||||
int j, n, reg, user, loaded_base;
|
||||
TCGv tmp;
|
||||
|
@ -1766,6 +1786,7 @@ static void do_ldst_m(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
|||
/* branch (and link) */
|
||||
static void do_branch(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
unsigned int val;
|
||||
int32_t offset;
|
||||
TCGv tmp;
|
||||
|
@ -1795,6 +1816,7 @@ static void do_branch(CPUUniCore32State *env, DisasContext *s, uint32_t insn)
|
|||
|
||||
static void disas_uc32_insn(CPUUniCore32State *env, DisasContext *s)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
unsigned int insn;
|
||||
|
||||
if (unlikely(qemu_loglevel_mask(CPU_LOG_TB_OP | CPU_LOG_TB_OP_OPT))) {
|
||||
|
@ -1978,7 +2000,7 @@ static inline void gen_intermediate_code_internal(UniCore32CPU *cpu,
|
|||
if (dc->condjmp) {
|
||||
/* FIXME: This can theoretically happen with self-modifying
|
||||
code. */
|
||||
cpu_abort(env, "IO on conditional branch instruction");
|
||||
cpu_abort(cs, "IO on conditional branch instruction");
|
||||
}
|
||||
gen_io_end();
|
||||
}
|
||||
|
|
|
@ -76,6 +76,7 @@ static inline int ucf64_exceptbits_to_host(int target_bits)
|
|||
|
||||
void HELPER(ucf64_set_fpscr)(CPUUniCore32State *env, uint32_t val)
|
||||
{
|
||||
UniCore32CPU *cpu = uc32_env_get_cpu(env);
|
||||
int i;
|
||||
uint32_t changed;
|
||||
|
||||
|
@ -99,7 +100,7 @@ void HELPER(ucf64_set_fpscr)(CPUUniCore32State *env, uint32_t val)
|
|||
i = float_round_down;
|
||||
break;
|
||||
default: /* 100 and 101 not implement */
|
||||
cpu_abort(env, "Unsupported UniCore-F64 round mode");
|
||||
cpu_abort(CPU(cpu), "Unsupported UniCore-F64 round mode");
|
||||
}
|
||||
set_float_rounding_mode(i, &env->ucf64.fp_status);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue