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-Unleashed-Test-Change

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