On Thu, Nov 25, 2010 at 10:04 PM, Andreas Färber andreas.faerber@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@suse.de Cc: Segher Boessenkool segher@kernel.crashing.org Signed-off-by: Andreas Färber andreas.faerber@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': /src/openbios-devel/obj-ppc64/../libopenbios/xcoff_load.c:118: 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. COLLECT_GCC=powerpc64-linux-gcc COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/powerpc64-linux/4.6.0/lto-wrapper 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)