[OpenBIOS] [commit] r969 - in trunk/openbios-devel/arch: ppc/qemu ppc64/qemu

Blue Swirl blauwirbel at gmail.com
Fri Nov 26 20:52:56 CET 2010

On Thu, Nov 25, 2010 at 10:04 PM, Andreas Färber <andreas.faerber at web.de> wrote:
> Am 25.11.2010 um 22:56 schrieb repository service:
>> Author: afaerber
>> Date: Thu Nov 25 22:56:23 2010
>> New Revision: 969
>> URL: http://tracker.coreboot.org/trac/openbios/changeset/969
>> Log:
>> ppc: Set up TOC base for ppc64
>> r2 points to TOC base, __toc_start + 0x8000.
>> This value is stored as part of the function descriptor.
>> Include some related ELF sections in the linker script.
>> Cc: Alexander Graf <agraf at suse.de>
>> Cc: Segher Boessenkool <segher at kernel.crashing.org>
>> Signed-off-by: Andreas Färber <andreas.faerber at web.de>
> Starting with this revision,
> qemu-system-ppc64 -bios .../obj-ppc64/openbios-qemu.elf -prom-env
> 'auto-boot?=false'
> should take you to the Forth prompt.

I still get this:
  GEN   bootstrap.dict
panic: segmentation violation at 0x9034862c
dict=0x2aae90348010 here=0x2aae90348638(dict+0x628) pc=0x0(dict+0x6fcb7ff0)
dstackcnt=0 rstackcnt=0 instruction=deadbeef
dstack: 0x0
rstack: 0x0
Writing dictionary core file

This happens on a 64 bit host, but not on a 32 bit host.

I built forthstrap on a 32 bit host to get further, but then I got:
  LINK  openbios-qemu.elf
libqemu.a(init.o): In function `go':
/src/openbios-devel/obj-ppc64/../arch/ppc/qemu/init.c:533: undefined
reference to `.call_elf'
libqemu.a(main.o): In function `oldworld_boot':
/src/openbios-devel/obj-ppc64/../arch/ppc/qemu/main.c:172: undefined
reference to `.call_elf'
libopenbios.a(elf_load.o): In function `elf_init_program':
/src/openbios-devel/obj-ppc64/../libopenbios/elf_load.c:525: undefined
reference to `.flush_icache_range'
libopenbios.a(xcoff_load.o): In function `xcoff_init_program':
undefined reference to `.flush_icache_range'
libdrivers.a(timer.o): In function `udelay':
/src/openbios-devel/obj-ppc64/../drivers/timer.c:91: undefined
reference to `._wait_ticks'
libgcc.a(__udivmoddi4.o): In function `__udivmoddi4':
/src/openbios-devel/obj-ppc64/../libgcc/__udivmoddi4.c:8: undefined
reference to `.__divide_error'

This is with powerpc64-linux-gcc compiler:
$ powerpc64-linux-gcc -v
Using built-in specs.
Target: powerpc64-linux
Configured with: ../configure --target=powerpc64-linux
--enable-targets=powerpc64-linux --disable-nls --disable-threads
--enable-languages=c --disable-shared --disable-libssp
--disable-multilib --disable-decimal-float
Thread model: single
gcc version 4.6.0 20100925 (experimental) (GCC)

More information about the OpenBIOS mailing list