[OpenBIOS] a couple of problem while compiling and running openfirmware on qemu
Andreas Färber
andreas.faerber at web.de
Sat Nov 6 15:41:34 CET 2010
Hello Gleb,
Am 01.11.2010 um 15:15 schrieb Gleb Natapov:
> I tried to compile openfirmware for qemu like described here
> http://www.openfirmware.info/Building_OFW_for_QEMU. But after running
> make in cpu/x86/pc/emu/build on 64bit host I get linkage error:
> ld -T inflate.ld inflate.lo -o inflate.o
> ld: i386 architecture of input file `inflate.lo' is incompatible
> with i386:x86-64 output
>
> After applying this patch:
> Index: cpu/x86/Linux/Makefile
> ===================================================================
> --- cpu/x86/Linux/Makefile (revision 1996)
> +++ cpu/x86/Linux/Makefile (working copy)
> @@ -34,7 +34,7 @@
> ${CC} -c -m32 -Wall -fno-stack-protector -ffreestanding -
> D_FORTIFY_SOURCE=0 -DNEED_BCOPY -O3 -fpic $< -o $@
>
> inflate.o: inflate.lo
> - ${LD} -T inflate.ld $< -o $@
> + ${LD} -melf_i386 -T inflate.ld $< -o $@
Can't say much about OFW but since no one has replied yet: maybe try
specifying OUTPUT_FORMAT(elf_i386) in inflate.ld or check where LD
gets defined? Not sure if this code is supposed to build for both
architectures or just 32-bit x86.
You may find better answers on the openfirmware list (cc'ed):
http://www.openfirmware.info/mailman/listinfo/openfirmware
Andreas
>
> ../build/inflate.bin: inflate.o
> objcopy -O binary $< $@
>
> ====
> compilation goes a little bit further but now it stops with:
> ./build emuofw.rom
> --- Rebuilding ohci.fc
> --- Cmd: ${HOSTDIR}/forth ${HOSTDIR}/../build/builder.dic ../ohci.bth
>
> ${BP}/dev/usb2/hcd/ohci/ohci.fth:25: my-w@ ?
>
> don't know much forth so just commented every line that gave me an
> error:
>
> Index: dev/usb2/hcd/ohci/ohci.fth
> ===================================================================
> --- dev/usb2/hcd/ohci/ohci.fth (revision 1996)
> +++ dev/usb2/hcd/ohci/ohci.fth (working copy)
> @@ -22,12 +22,12 @@
> 0 value ohci-reg
>
> : map-regs ( -- )
> - 4 my-w@ h# 16 or 4 my-w!
> - 0 0 my-space h# 0200.0010 + 1000 map-in to ohci-reg
> +\ 4 my-w@ h# 16 or 4 my-w!
> +\ 0 0 my-space h# 0200.0010 + 1000 map-in to ohci-reg
> ;
>
> : unmap-regs ( -- )
> - ohci-reg 1000 map-out 0 to ohci-reg
> +\ ohci-reg 1000 map-out 0 to ohci-reg
> ;
>
> : ohci-reg@ ( idx -- data ) ohci-reg + rl@ ;
> ========
> After that compilation finally succeeded.
>
> Produced rom image runs fine on qemu, but fails on qemu-kvm with
> error:
> BUG: kvm_dirty_pages_log_change: invalid parameters
> 0000000010000000-0000000010ffffff
>
> Looking into it it seams like openfirmware configure cirrus
> framebuffer to be
> at address 0x10000000, but later it configures nic memory BAR with the
> same address (during device enumeration perhaps). Later it
> deconfigures
> nic again. Qemu somehow handles this fine, but qemu-kvm doesn't. This
> shouldn't work on real HW too FWIW.
>
> --
> Gleb.
>
> --
> OpenBIOS http://openbios.org/
> Mailinglist: http://lists.openbios.org/mailman/listinfo
> Free your System - May the Forth be with you
More information about the OpenBIOS
mailing list