Separate fault for code access to unassigned memory
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2876 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
b3a2319792
commit
1b2e93c175
@ -40,6 +40,7 @@
|
||||
#define TT_DFAULT 0x09
|
||||
#define TT_TOVF 0x0a
|
||||
#define TT_EXTINT 0x10
|
||||
#define TT_CODE_ACCESS 0x21
|
||||
#define TT_DATA_ACCESS 0x29
|
||||
#define TT_DIV_ZERO 0x2a
|
||||
#define TT_NCP_INSN 0x24
|
||||
@ -47,6 +48,7 @@
|
||||
#else
|
||||
#define TT_TFAULT 0x08
|
||||
#define TT_TMISS 0x09
|
||||
#define TT_CODE_ACCESS 0x0a
|
||||
#define TT_ILL_INSN 0x10
|
||||
#define TT_PRIV_INSN 0x11
|
||||
#define TT_NFPU_INSN 0x20
|
||||
|
@ -1111,7 +1111,10 @@ void do_unassigned_access(target_phys_addr_t addr, int is_write, int is_exec,
|
||||
printf("Unassigned mem access to " TARGET_FMT_plx " from " TARGET_FMT_lx
|
||||
"\n", addr, env->pc);
|
||||
#endif
|
||||
raise_exception(TT_DATA_ACCESS);
|
||||
if (is_exec)
|
||||
raise_exception(TT_CODE_ACCESS);
|
||||
else
|
||||
raise_exception(TT_DATA_ACCESS);
|
||||
}
|
||||
env = saved_env;
|
||||
}
|
||||
@ -1130,7 +1133,10 @@ void do_unassigned_access(target_phys_addr_t addr, int is_write, int is_exec,
|
||||
addr, env->pc);
|
||||
env = saved_env;
|
||||
#endif
|
||||
raise_exception(TT_DATA_ACCESS);
|
||||
if (is_exec)
|
||||
raise_exception(TT_CODE_ACCESS);
|
||||
else
|
||||
raise_exception(TT_DATA_ACCESS);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user