Hi,
I haven't looked at the details of your code, so these are just ideas what could be wrong. I was able to run bbl with linux a while ago. 1. Device tree provided to bbl not correct. Although this should cause exceptions in bbl already 2. reserved-memory area provided to kernel doesn't match your changed address of bbl, which can cause the kernel to override the m-mode handlers -> my suggestion for now: change the coreboot ramstage location instead (easier anyway) 3. Are you really executing BBL in m-mode? Try to execute the payload directly instead of mret.
Can you provide the serial output that you receive? Philipp
Am Do., 20. Dez. 2018 um 04:57 Uhr schrieb 王翔 merle@tya.email:
I tried to adapt coreboot to HiFive-Unleashed and boot bbl with coreboot and run linux. My changes are as follows:
https://github.com/hardenedlinux/coreboot-HiFiveUnleashed/tree/HiFive-Unleas...
My code can run bbl, but it doesn't respond when bbl exits m-mode and enters linux.
I use freedom-u-sdk to compile bbl. In order not to conflict with the coreboot memory address, execute the following command. riscv64-elf-objcopy --change-addresses 0x200000 work/riscv-pk/bbl ../coreboot/payload.elf
I don't know what I missed, what should I do, I hope to get your help.
王翔
安全研究员
广州市腾御安信息科技有限公司
广州市天河区珠江新城华穗路406号保利克洛维二期中景A座1020-1024