[coreboot] Porting romstage to 64 bit
tha_tux at hotmail.com
Fri Nov 11 13:20:22 CET 2016
Based on work of Scott Duplichan  and the patches of Stefan Reinauer  I try to get the romstage of Coreboot compiled and working as 64 bit. I tried doing so by:
Setting select ARCH_ROMSTAGE_X86_64 in the Kconfig of my CPU.
Then the x86_64-elf-gcc compiler tells me "error: CPU you selected does not support x86-64 instruction set" So I change the .xcompile file from GCC_CFLAGS_x86_64 += -march=i686 to GCC_CFLAGS_x86_64 += -march=x86_64.
After doing that I run into the "error: cast to pointer from integer of different size" which I fix by using (uintptr_t) casts. Together with adding .code32 to src/arch/x86/walkcbfs.S and changing the condition of the LD_ramstage flag in src/arch/x86/Makefile.inc from CONFIG_ARCH_ROMSTAGE_X86_32 to CONFIG_ARCH_RAMSTAGE_X86_32 (is this a bug or intentional; altering the ramstage linker flags based on the compilation architecture of the romstage?)
However, then I run into the following error: "E: ELF is unsupported arch: 62" originating from util/cbfstool/rmodule.c. Apparently the cbfstool doesn't support relocation for 64 bit ELF files? Should I try to add this or am I making another obvious mistake? Can I disable relocation, I have more than enough room on my flashchip?
Finally, I cannot find the man pages of the elf gcc compiler for selecting the correct --architecture --march and --oformat, where should I look?
More information about the coreboot