riscv: use new-style CBFS header lookup
We recently restructured where the CBFS header is stored and how it is looked up, with less magic. The RISC-V port didn't get the memo, so have it follow the pack now. Change-Id: Ic27e3e7f9acd55027e357f2c4beddf960ea02c4d Signed-off-by: Patrick Georgi <patrick@georgi-clan.de> Reviewed-on: http://review.coreboot.org/9795 Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Tested-by: build bot (Jenkins)
This commit is contained in:
parent
42001a7051
commit
7effaa4c02
|
@ -58,25 +58,6 @@ _start:
|
||||||
.stack_size:
|
.stack_size:
|
||||||
.quad 0xf00
|
.quad 0xf00
|
||||||
|
|
||||||
.globl _cbfs_master_header
|
|
||||||
_cbfs_master_header:
|
|
||||||
.balignl 16,0xdeadbeef
|
|
||||||
.align 8
|
|
||||||
// this assembler SUCKS
|
|
||||||
.long 0x4F524243
|
|
||||||
.long 0xdeadbeef
|
|
||||||
.long 0xdeadbeef
|
|
||||||
.long 0xdeadbeef
|
|
||||||
.long 0xdeadbeef
|
|
||||||
.long 0xdeadbeef
|
|
||||||
.long 0xdeadbeef
|
|
||||||
/* The CBFS master header is inserted by cbfstool at the first
|
|
||||||
* aligned offset after the above anchor string is found.
|
|
||||||
* Hence, we leave some space for it.
|
|
||||||
* Assumes 64-byte alignment.
|
|
||||||
*/
|
|
||||||
.space 128
|
|
||||||
|
|
||||||
reset:
|
reset:
|
||||||
init_stack_loop:
|
init_stack_loop:
|
||||||
|
|
||||||
|
|
|
@ -60,12 +60,12 @@ static int rom_media_close(struct cbfs_media *media) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int init_rom_media_cbfs(struct cbfs_media *media) {
|
static int init_rom_media_cbfs(struct cbfs_media *media) {
|
||||||
//extern unsigned long _cbfs_master_header;
|
/* this assumes that the CBFS resides at 0x0,
|
||||||
// On X86, we always keep a reference of pointer to CBFS header in
|
* which is true for the default configuration
|
||||||
// 0xfffffffc, and the pointer is still a memory-mapped address.
|
*/
|
||||||
// Since the CBFS core always use ROM offset, we need to figure out
|
int32_t *cbfs_header_ptr = (int32_t*)(uintptr_t)(CONFIG_CBFS_SIZE - 4);
|
||||||
// header->romsize even before media is initialized.
|
uint64_t cbfs_header_offset = CONFIG_CBFS_SIZE + *cbfs_header_ptr;
|
||||||
struct cbfs_header *header = (struct cbfs_header*) CONFIG_CBFS_HEADER_ROM_OFFSET; //&_cbfs_master_header;
|
struct cbfs_header *header = (struct cbfs_header*) cbfs_header_offset;
|
||||||
if (CBFS_HEADER_MAGIC != ntohl(header->magic)) {
|
if (CBFS_HEADER_MAGIC != ntohl(header->magic)) {
|
||||||
printk(BIOS_ERR, "Invalid CBFS master header at %p\n", header);
|
printk(BIOS_ERR, "Invalid CBFS master header at %p\n", header);
|
||||||
printk(BIOS_ERR, "Expected %08lx and got %08lx\n", (unsigned long) CBFS_HEADER_MAGIC, (unsigned long) ntohl(header->magic));
|
printk(BIOS_ERR, "Expected %08lx and got %08lx\n", (unsigned long) CBFS_HEADER_MAGIC, (unsigned long) ntohl(header->magic));
|
||||||
|
|
Loading…
Reference in New Issue