Use MMU globals for some MMU traps
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4918 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
8eba209e33
commit
74b9decc47
@ -61,12 +61,13 @@
|
||||
#define TT_DIV_ZERO 0x28
|
||||
#define TT_DFAULT 0x30
|
||||
#define TT_DATA_ACCESS 0x32
|
||||
#define TT_DPROT 0x33
|
||||
#define TT_UNALIGNED 0x34
|
||||
#define TT_PRIV_ACT 0x37
|
||||
#define TT_EXTINT 0x40
|
||||
#define TT_IVEC 0x60
|
||||
#define TT_TMISS 0x64
|
||||
#define TT_DMISS 0x68
|
||||
#define TT_DPROT 0x6c
|
||||
#define TT_SPILL 0x80
|
||||
#define TT_FILL 0xc0
|
||||
#define TT_WOTHER 0x10
|
||||
|
@ -758,9 +758,23 @@ void do_interrupt(CPUState *env)
|
||||
env->tsptr->tpc = env->pc;
|
||||
env->tsptr->tnpc = env->npc;
|
||||
env->tsptr->tt = intno;
|
||||
if (!(env->features & CPU_FEATURE_GL))
|
||||
change_pstate(PS_PEF | PS_PRIV | PS_AG);
|
||||
|
||||
if (!(env->features & CPU_FEATURE_GL)) {
|
||||
switch (intno) {
|
||||
case TT_IVEC:
|
||||
change_pstate(PS_PEF | PS_PRIV | PS_IG);
|
||||
break;
|
||||
case TT_TFAULT:
|
||||
case TT_TMISS:
|
||||
case TT_DFAULT:
|
||||
case TT_DMISS:
|
||||
case TT_DPROT:
|
||||
change_pstate(PS_PEF | PS_PRIV | PS_MG);
|
||||
break;
|
||||
default:
|
||||
change_pstate(PS_PEF | PS_PRIV | PS_AG);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (intno == TT_CLRWIN)
|
||||
cpu_set_cwp(env, cpu_cwp_dec(env, env->cwp - 1));
|
||||
else if ((intno & 0x1c0) == TT_SPILL)
|
||||
|
Loading…
Reference in New Issue
Block a user