Sricharan Ramabadhran has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/29969 )
Change subject: TEMP: NOT FOR REVIEW: qcs405: memlayout: Make bootblock 64k aligned ......................................................................
Patch Set 21:
Patch Set 21:
(1 comment)
Hi Julius, Apologies for coming back late on this. To explain the issue a bit again, BOOTBLOCK is compiled to run from SRAM -> 0x8c300000 absolute address
qc-sec while jumping from 32bit<->64bit using rmr, maps 0x8c30000 <-> 0x0 address and jumps
So 0x8c30000 gets mapped to 0x0 and bootblock starts executing from 0x0 address. But the hardware is so that it maps only 128KB (that's the max) from 0x8c30000<->0x0
But bootblock starts to reference address which is beyond this 128KB, like bootmem_console, timestamp etc. Even if you try to pull these items inside the 128KB, the code still references few items based on REGION macros, which works based on adrp instruction that uses pc based relative addressing. For eg, execution fails when _ttb and _ettb variables are referenced. Because _ettb gets mapped to 0x20000 (based on 0x0 relative), where as _ttb is fixed at 0x8c3..... , end address is less than start, things fail.