Commit 74b9decc473177f16cb84b3504ad8169f13ec147

Authored by blueswir1
1 parent 8eba209e

Use MMU globals for some MMU traps

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4918 c046a42c-6fe2-441c-8c8c-71466251a162
target-sparc/cpu.h
... ... @@ -61,12 +61,13 @@
61 61 #define TT_DIV_ZERO 0x28
62 62 #define TT_DFAULT 0x30
63 63 #define TT_DATA_ACCESS 0x32
64   -#define TT_DPROT 0x33
65 64 #define TT_UNALIGNED 0x34
66 65 #define TT_PRIV_ACT 0x37
67 66 #define TT_EXTINT 0x40
  67 +#define TT_IVEC 0x60
68 68 #define TT_TMISS 0x64
69 69 #define TT_DMISS 0x68
  70 +#define TT_DPROT 0x6c
70 71 #define TT_SPILL 0x80
71 72 #define TT_FILL 0xc0
72 73 #define TT_WOTHER 0x10
... ...
target-sparc/helper.c
... ... @@ -758,9 +758,23 @@ void do_interrupt(CPUState *env)
758 758 env->tsptr->tpc = env->pc;
759 759 env->tsptr->tnpc = env->npc;
760 760 env->tsptr->tt = intno;
761   - if (!(env->features & CPU_FEATURE_GL))
762   - change_pstate(PS_PEF | PS_PRIV | PS_AG);
763   -
  761 + if (!(env->features & CPU_FEATURE_GL)) {
  762 + switch (intno) {
  763 + case TT_IVEC:
  764 + change_pstate(PS_PEF | PS_PRIV | PS_IG);
  765 + break;
  766 + case TT_TFAULT:
  767 + case TT_TMISS:
  768 + case TT_DFAULT:
  769 + case TT_DMISS:
  770 + case TT_DPROT:
  771 + change_pstate(PS_PEF | PS_PRIV | PS_MG);
  772 + break;
  773 + default:
  774 + change_pstate(PS_PEF | PS_PRIV | PS_AG);
  775 + break;
  776 + }
  777 + }
764 778 if (intno == TT_CLRWIN)
765 779 cpu_set_cwp(env, cpu_cwp_dec(env, env->cwp - 1));
766 780 else if ((intno & 0x1c0) == TT_SPILL)
... ...