Message ID | 20100102203538.GB5837@hall.aurel32.net |
---|---|
State | New |
Headers | show |
On Sat, Jan 02, 2010 at 09:35:38PM +0100, Aurelien Jarno wrote: > On Sat, Jan 02, 2010 at 01:26:54PM -0500, Kevin O'Connor wrote: > > I'm running into an issue with SeaBIOS compiled with older versions of > > gcc. I'm seeing: > > > > $ qemu-system-x86_64 -d in_asm,int,exec,cpu,pcall > > > > IN: > > 0x00000000000f1096: mov %ebx,%eax > > 0x00000000000f1098: call 0xffff0f80 > > > > qemu: fatal: Trying to execute code outside RAM or ROM at 0xffffffffffff0f80 > > The problem has been fixed in 32938e127f50a40844a0fb9c5abb8691aeeccf7e > for jmp imm. I guess the same patch applies for call. Could you confirm? Your patch fixes the problem. Thanks, -Kevin
diff --git a/pc-bios/openbios-sparc64 b/pc-bios/openbios-sparc64 index 0e91cab..ec47b5f 100644 Binary files a/pc-bios/openbios-sparc64 and b/pc-bios/openbios-sparc64 differ diff --git a/target-i386/translate.c b/target-i386/translate.c index 64bc0a3..511a4ea 100644 --- a/target-i386/translate.c +++ b/target-i386/translate.c @@ -6259,6 +6259,8 @@ static target_ulong disas_insn(DisasContext *s, target_ulong pc_start) tval += next_eip; if (s->dflag == 0) tval &= 0xffff; + else if(!CODE64(s)) + tval &= 0xffffffff; gen_movtl_T0_im(next_eip); gen_push_T0(s); gen_jmp(s, tval);