Message ID | 1367000509-8833-6-git-send-email-agraf@suse.de |
---|---|
State | New |
Headers | show |
Am 26.04.2013 20:21, schrieb Alexander Graf: > From: Fabien Chouteau <chouteau@adacore.com> > > According to the different user's manuals, the vector offset for system > reset (both /HRESET and /SRESET) is 0x00100. > > This patch may break support of some executables, as the power-on start > address may change. For a specific board, if the power-on start address > is different than HRESET vector (i.e. 0x00000100 or 0xfff00100), this > should be fixed in board's initialization code. > > Signed-off-by: Fabien Chouteau <chouteau@adacore.com> > Signed-off-by: Alexander Graf <agraf@suse.de> According to git-bisect, this commit broke the prep machine (602). Symptoms are a black screen with no VGA output from OHW or kernel. Please suggest a fix. Thanks, Andreas > --- > target-ppc/translate_init.c | 22 +++++++++++----------- > 1 files changed, 11 insertions(+), 11 deletions(-) > > diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c > index 402ad2a..f1d150a 100644 > --- a/target-ppc/translate_init.c > +++ b/target-ppc/translate_init.c > @@ -2645,7 +2645,7 @@ static void init_excp_MPC5xx (CPUPPCState *env) > env->ivor_mask = 0x0000FFF0UL; > env->ivpr_mask = 0xFFFF0000UL; > /* Hardware reset vector */ > - env->hreset_vector = 0xFFFFFFFCUL; > + env->hreset_vector = 0x00000100UL; > #endif > } > > @@ -2676,7 +2676,7 @@ static void init_excp_MPC8xx (CPUPPCState *env) > env->ivor_mask = 0x0000FFF0UL; > env->ivpr_mask = 0xFFFF0000UL; > /* Hardware reset vector */ > - env->hreset_vector = 0xFFFFFFFCUL; > + env->hreset_vector = 0x00000100UL; > #endif > } > > @@ -2701,7 +2701,7 @@ static void init_excp_G2 (CPUPPCState *env) > env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; > env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; > /* Hardware reset vector */ > - env->hreset_vector = 0xFFFFFFFCUL; > + env->hreset_vector = 0x00000100UL; > #endif > } > > @@ -2804,7 +2804,7 @@ static void init_excp_602 (CPUPPCState *env) > env->excp_vectors[POWERPC_EXCP_WDT] = 0x00001500; > env->excp_vectors[POWERPC_EXCP_EMUL] = 0x00001600; > /* Hardware reset vector */ > - env->hreset_vector = 0xFFFFFFFCUL; > + env->hreset_vector = 0x00000100UL; > #endif > } > > @@ -2828,7 +2828,7 @@ static void init_excp_603 (CPUPPCState *env) > env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; > env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; > /* Hardware reset vector */ > - env->hreset_vector = 0xFFFFFFFCUL; > + env->hreset_vector = 0x00000100UL; > #endif > } > > @@ -2873,7 +2873,7 @@ static void init_excp_7x0 (CPUPPCState *env) > env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; > env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; > /* Hardware reset vector */ > - env->hreset_vector = 0xFFFFFFFCUL; > + env->hreset_vector = 0x00000100UL; > #endif > } > > @@ -2895,7 +2895,7 @@ static void init_excp_750cl (CPUPPCState *env) > env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; > env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; > /* Hardware reset vector */ > - env->hreset_vector = 0xFFFFFFFCUL; > + env->hreset_vector = 0x00000100UL; > #endif > } > > @@ -2917,7 +2917,7 @@ static void init_excp_750cx (CPUPPCState *env) > env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; > env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; > /* Hardware reset vector */ > - env->hreset_vector = 0xFFFFFFFCUL; > + env->hreset_vector = 0x00000100UL; > #endif > } > > @@ -2944,7 +2944,7 @@ static void init_excp_7x5 (CPUPPCState *env) > env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; > env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; > /* Hardware reset vector */ > - env->hreset_vector = 0xFFFFFFFCUL; > + env->hreset_vector = 0x00000100UL; > #endif > } > > @@ -2969,7 +2969,7 @@ static void init_excp_7400 (CPUPPCState *env) > env->excp_vectors[POWERPC_EXCP_VPUA] = 0x00001600; > env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; > /* Hardware reset vector */ > - env->hreset_vector = 0xFFFFFFFCUL; > + env->hreset_vector = 0x00000100UL; > #endif > } > > @@ -2996,7 +2996,7 @@ static void init_excp_7450 (CPUPPCState *env) > env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; > env->excp_vectors[POWERPC_EXCP_VPUA] = 0x00001600; > /* Hardware reset vector */ > - env->hreset_vector = 0xFFFFFFFCUL; > + env->hreset_vector = 0x00000100UL; > #endif > } > >
On 04/28/2013 03:59 PM, Andreas Färber wrote: > Am 26.04.2013 20:21, schrieb Alexander Graf: >> From: Fabien Chouteau <chouteau@adacore.com> >> >> According to the different user's manuals, the vector offset for system >> reset (both /HRESET and /SRESET) is 0x00100. >> >> This patch may break support of some executables, as the power-on start >> address may change. For a specific board, if the power-on start address >> is different than HRESET vector (i.e. 0x00000100 or 0xfff00100), this >> should be fixed in board's initialization code. >> >> Signed-off-by: Fabien Chouteau <chouteau@adacore.com> >> Signed-off-by: Alexander Graf <agraf@suse.de> > > According to git-bisect, this commit broke the prep machine (602). > Symptoms are a black screen with no VGA output from OHW or kernel. > > Please suggest a fix. > Can you hand me the binaries so I can try to fix this?
Am 29.04.2013 12:38, schrieb Fabien Chouteau: > On 04/28/2013 03:59 PM, Andreas Färber wrote: >> Am 26.04.2013 20:21, schrieb Alexander Graf: >>> From: Fabien Chouteau <chouteau@adacore.com> >>> >>> According to the different user's manuals, the vector offset for system >>> reset (both /HRESET and /SRESET) is 0x00100. >>> >>> This patch may break support of some executables, as the power-on start >>> address may change. For a specific board, if the power-on start address >>> is different than HRESET vector (i.e. 0x00000100 or 0xfff00100), this >>> should be fixed in board's initialization code. >>> >>> Signed-off-by: Fabien Chouteau <chouteau@adacore.com> >>> Signed-off-by: Alexander Graf <agraf@suse.de> >> >> According to git-bisect, this commit broke the prep machine (602). >> Symptoms are a black screen with no VGA output from OHW or kernel. >> >> Please suggest a fix. >> > > Can you hand me the binaries so I can try to fix this? The old ppc_rom.bin is still in qemu.git, so this should suffice: ./ppc-softmmu/qemu-system-ppc -M prep Problem is, we can't really recompile that binary with changes - and to switch to OpenBIOS after 1.5 to get rid of it, I need to test that my incremental patches don't break anything. ;) Andreas
On Mon, Apr 29, 2013 at 01:37:30PM +0200, Andreas Färber wrote: > Am 29.04.2013 12:38, schrieb Fabien Chouteau: > > On 04/28/2013 03:59 PM, Andreas Färber wrote: > >> Am 26.04.2013 20:21, schrieb Alexander Graf: > >>> From: Fabien Chouteau <chouteau@adacore.com> > >>> > >>> According to the different user's manuals, the vector offset for system > >>> reset (both /HRESET and /SRESET) is 0x00100. > >>> > >>> This patch may break support of some executables, as the power-on start > >>> address may change. For a specific board, if the power-on start address > >>> is different than HRESET vector (i.e. 0x00000100 or 0xfff00100), this > >>> should be fixed in board's initialization code. > >>> > >>> Signed-off-by: Fabien Chouteau <chouteau@adacore.com> > >>> Signed-off-by: Alexander Graf <agraf@suse.de> > >> > >> According to git-bisect, this commit broke the prep machine (602). > >> Symptoms are a black screen with no VGA output from OHW or kernel. > >> > >> Please suggest a fix. > >> > > > > Can you hand me the binaries so I can try to fix this? > > The old ppc_rom.bin is still in qemu.git, so this should suffice: > > ./ppc-softmmu/qemu-system-ppc -M prep > > Problem is, we can't really recompile that binary with changes - and to > switch to OpenBIOS after 1.5 to get rid of it, I need to test that my > incremental patches don't break anything. ;) You can't really recompile this exact version, but you can recompile a slightly older version, the one which is in the Debian archive: http://packages.debian.org/source/unstable/openhackware I don't know what are the difference between this one and the one in QEMU though.
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index 402ad2a..f1d150a 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -2645,7 +2645,7 @@ static void init_excp_MPC5xx (CPUPPCState *env) env->ivor_mask = 0x0000FFF0UL; env->ivpr_mask = 0xFFFF0000UL; /* Hardware reset vector */ - env->hreset_vector = 0xFFFFFFFCUL; + env->hreset_vector = 0x00000100UL; #endif } @@ -2676,7 +2676,7 @@ static void init_excp_MPC8xx (CPUPPCState *env) env->ivor_mask = 0x0000FFF0UL; env->ivpr_mask = 0xFFFF0000UL; /* Hardware reset vector */ - env->hreset_vector = 0xFFFFFFFCUL; + env->hreset_vector = 0x00000100UL; #endif } @@ -2701,7 +2701,7 @@ static void init_excp_G2 (CPUPPCState *env) env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; /* Hardware reset vector */ - env->hreset_vector = 0xFFFFFFFCUL; + env->hreset_vector = 0x00000100UL; #endif } @@ -2804,7 +2804,7 @@ static void init_excp_602 (CPUPPCState *env) env->excp_vectors[POWERPC_EXCP_WDT] = 0x00001500; env->excp_vectors[POWERPC_EXCP_EMUL] = 0x00001600; /* Hardware reset vector */ - env->hreset_vector = 0xFFFFFFFCUL; + env->hreset_vector = 0x00000100UL; #endif } @@ -2828,7 +2828,7 @@ static void init_excp_603 (CPUPPCState *env) env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; /* Hardware reset vector */ - env->hreset_vector = 0xFFFFFFFCUL; + env->hreset_vector = 0x00000100UL; #endif } @@ -2873,7 +2873,7 @@ static void init_excp_7x0 (CPUPPCState *env) env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; /* Hardware reset vector */ - env->hreset_vector = 0xFFFFFFFCUL; + env->hreset_vector = 0x00000100UL; #endif } @@ -2895,7 +2895,7 @@ static void init_excp_750cl (CPUPPCState *env) env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; /* Hardware reset vector */ - env->hreset_vector = 0xFFFFFFFCUL; + env->hreset_vector = 0x00000100UL; #endif } @@ -2917,7 +2917,7 @@ static void init_excp_750cx (CPUPPCState *env) env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300; env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; /* Hardware reset vector */ - env->hreset_vector = 0xFFFFFFFCUL; + env->hreset_vector = 0x00000100UL; #endif } @@ -2944,7 +2944,7 @@ static void init_excp_7x5 (CPUPPCState *env) env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; /* Hardware reset vector */ - env->hreset_vector = 0xFFFFFFFCUL; + env->hreset_vector = 0x00000100UL; #endif } @@ -2969,7 +2969,7 @@ static void init_excp_7400 (CPUPPCState *env) env->excp_vectors[POWERPC_EXCP_VPUA] = 0x00001600; env->excp_vectors[POWERPC_EXCP_THERM] = 0x00001700; /* Hardware reset vector */ - env->hreset_vector = 0xFFFFFFFCUL; + env->hreset_vector = 0x00000100UL; #endif } @@ -2996,7 +2996,7 @@ static void init_excp_7450 (CPUPPCState *env) env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400; env->excp_vectors[POWERPC_EXCP_VPUA] = 0x00001600; /* Hardware reset vector */ - env->hreset_vector = 0xFFFFFFFCUL; + env->hreset_vector = 0x00000100UL; #endif }