Marshall Dawson has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/35035 )
Change subject: arch/x86: Implement RESET_VECTOR_IN_RAM ......................................................................
Patch Set 9:
(2 comments)
https://review.coreboot.org/c/coreboot/+/35035/8/src/arch/x86/early_dram.ld File src/arch/x86/early_dram.ld:
https://review.coreboot.org/c/coreboot/+/35035/8/src/arch/x86/early_dram.ld@... PS8, Line 37: *(.near_reset_vector);
Does this work? I did some tests using the same code but with the regular below 4G bootblock and it […]
Yes, I just repushed with an updated commit message ICYMI. I pasted the regions from readelf and you can see the >64K region with the .near_reset_vector tucked up near the very top of PROGBITS.
I'm not sure why KEEP() would've been required. FWIW I mocked it up on for C_ENVIRONMENT_BOOTBLOCK and built a google/grunt. I was able to build successfully once I provided a little more room between near_reset_vector and the reset vector. I can send that to you if you're interested. BTW, I didn't grow the bootblock; only inserted the new section name and verified it that reset/entry16/entry32 functionality moved.
https://review.coreboot.org/c/coreboot/+/35035/8/src/arch/x86/early_dram.ld@... PS8, Line 27: /* : * .near_reset_vector is used to position code that must be reachable : * from the reset vector. For a program size <= 64KB, this happens by : * default, however with > 64KB it is artificially enforced. : */ : _NEAR_RESET_VECTOR = CONFIG_ROMSTAGE_ADDR + CONFIG_RAM_RESET_VECTOR_STAGE_SIZE - 0x100; : _RESET_VECTOR = CONFIG_ROMSTAGE_ADDR + CONFIG_RAM_RESET_VECTOR_STAGE_SIZE - 0x10; : : . = _NEAR_RESET_VECTOR; : .near_reset_vector . : { : *(.near_reset_vector); : }
Hmm, sure. […]
Right. It's been a while since I've dealt with the romcc one. Agree, there's a solution if we need to go >64K.