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_DIV_ZERO 0x28
|
||||||
#define TT_DFAULT 0x30
|
#define TT_DFAULT 0x30
|
||||||
#define TT_DATA_ACCESS 0x32
|
#define TT_DATA_ACCESS 0x32
|
||||||
#define TT_DPROT 0x33
|
|
||||||
#define TT_UNALIGNED 0x34
|
#define TT_UNALIGNED 0x34
|
||||||
#define TT_PRIV_ACT 0x37
|
#define TT_PRIV_ACT 0x37
|
||||||
#define TT_EXTINT 0x40
|
#define TT_EXTINT 0x40
|
||||||
|
#define TT_IVEC 0x60
|
||||||
#define TT_TMISS 0x64
|
#define TT_TMISS 0x64
|
||||||
#define TT_DMISS 0x68
|
#define TT_DMISS 0x68
|
||||||
|
#define TT_DPROT 0x6c
|
||||||
#define TT_SPILL 0x80
|
#define TT_SPILL 0x80
|
||||||
#define TT_FILL 0xc0
|
#define TT_FILL 0xc0
|
||||||
#define TT_WOTHER 0x10
|
#define TT_WOTHER 0x10
|
||||||
|
@ -758,9 +758,23 @@ void do_interrupt(CPUState *env)
|
|||||||
env->tsptr->tpc = env->pc;
|
env->tsptr->tpc = env->pc;
|
||||||
env->tsptr->tnpc = env->npc;
|
env->tsptr->tnpc = env->npc;
|
||||||
env->tsptr->tt = intno;
|
env->tsptr->tt = intno;
|
||||||
if (!(env->features & CPU_FEATURE_GL))
|
if (!(env->features & CPU_FEATURE_GL)) {
|
||||||
change_pstate(PS_PEF | PS_PRIV | PS_AG);
|
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)
|
if (intno == TT_CLRWIN)
|
||||||
cpu_set_cwp(env, cpu_cwp_dec(env, env->cwp - 1));
|
cpu_set_cwp(env, cpu_cwp_dec(env, env->cwp - 1));
|
||||||
else if ((intno & 0x1c0) == TT_SPILL)
|
else if ((intno & 0x1c0) == TT_SPILL)
|
||||||
|
Loading…
Reference in New Issue
Block a user