Revision 20503968 target-microblaze/op_helper.c
b/target-microblaze/op_helper.c | ||
---|---|---|
44 | 44 |
from generated code or from helper.c) */ |
45 | 45 |
/* XXX: fix it to restore all registers */ |
46 | 46 |
void tlb_fill(CPUMBState *env1, target_ulong addr, int is_write, int mmu_idx, |
47 |
void *retaddr)
|
|
47 |
uintptr_t retaddr)
|
|
48 | 48 |
{ |
49 | 49 |
TranslationBlock *tb; |
50 | 50 |
CPUMBState *saved_env; |
51 |
unsigned long pc; |
|
52 | 51 |
int ret; |
53 | 52 |
|
54 | 53 |
saved_env = env; |
... | ... | |
58 | 57 |
if (unlikely(ret)) { |
59 | 58 |
if (retaddr) { |
60 | 59 |
/* now we have a real cpu fault */ |
61 |
pc = (unsigned long)retaddr; |
|
62 |
tb = tb_find_pc(pc); |
|
60 |
tb = tb_find_pc(retaddr); |
|
63 | 61 |
if (tb) { |
64 | 62 |
/* the PC is inside the translated code. It means that we have |
65 | 63 |
a virtual CPU fault */ |
66 |
cpu_restore_state(tb, env, pc);
|
|
64 |
cpu_restore_state(tb, env, retaddr);
|
|
67 | 65 |
} |
68 | 66 |
} |
69 | 67 |
cpu_loop_exit(env); |
Also available in: Unified diff