blob: 52f328b2d34da38a2ddca147fcda3224a838ccbc (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
7400,7410,7450 cpus vector have wrong exception prefix at reset
I have a proprietary ROM implementing system calls that are executed via the 'SC' instruction.
I use qemu-0.14.1,
qemu-system-ppc -M prep -cpu $CPU -bios my_bios -kernel my_kernel
That works fine on a 604 (CPU=0x00040103) - but does not on an emulated 7400 (CPU=0x000c0209) or 7450 (CPU=0x80000201). I found that the emulator jumps to 0x00000c00 instead of 0xfff00c00.
Probably this is due to a wrong setting in target-ppc/translate_init.c:
init_excp_604() correctly sets env->hreset_vector=0xfff00000UL;
but
init_excp_7400() says env->hreset_vector=0x00000000UL;
which seems wrong. (the 7400 manual says a hard-reset jumps initializes the
prefix to 0xfff00000.)
Likewise, init_excp_7450() (and probably other, related CPUs) are wrong.
Indeed, when I change the value in init_excp_7400() to 0xfff00000UL then
everything works as expected for me.
|