Kyösti Mälkki has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/30855 )
Change subject: arch/x86: Align _start16bit with C_ENVIRONMENT_BOOBLOCK ......................................................................
Patch Set 2:
(1 comment)
https://review.coreboot.org/#/c/30855/2/src/cpu/x86/16bit/entry16.inc File src/cpu/x86/16bit/entry16.inc:
https://review.coreboot.org/#/c/30855/2/src/cpu/x86/16bit/entry16.inc@32 PS2, Line 32: #if IS_ENABLED(CONFIG_C_ENVIRONMENT_BOOTBLOCK) || \
Yes, sorry. I got confused with the alignment vs jmp instruction offset. […]
objdump -M i8086 -d build/cbfs/fallback/bootblock.elf
build/cbfs/fallback/bootblock.elf: file format elf32-i386
Disassembly of section .text:
ffff0000 <_start16bit>: ffff0000: fa cli
....
Disassembly of section .reset:
fffffff0 <_start>: fffffff0: e9 0d 00 jmp ffff0000 <_start16bit> fffffff3: ff (bad) fffffff4: ff 66 90 jmp *-0x70(%bp) fffffff7: 66 90 xchg %eax,%eax fffffff9: 66 90 xchg %eax,%eax fffffffb: 66 90 xchg %eax,%eax fffffffd: 66 90 xchg %eax,%eax ...
Well.. the above still does boot for me. It's real mode, 16bit IP overflows when given a positive rel16 argument with, yet that intrasegment near jump stays within the same CS segment?
Not really the scope of this patch, to address _start16bit<->reset distance?