From 4d3e4c421e94814884d1ff035a4c4ec80d4b33b2 Mon Sep 17 00:00:00 2001 From: Patrick Georgi Date: Tue, 14 Jul 2015 22:28:27 +0200 Subject: cbfs: hardcode file alignment Assume that it's 64 byte. Change-Id: I168facd92f64c2cf99c26c350c60317807a4aed4 Signed-off-by: Patrick Georgi Reviewed-on: http://review.coreboot.org/10919 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin --- src/arch/x86/mmap_boot.c | 4 +--- src/arch/x86/walkcbfs.S | 20 ++++++++------------ 2 files changed, 9 insertions(+), 15 deletions(-) (limited to 'src/arch') diff --git a/src/arch/x86/mmap_boot.c b/src/arch/x86/mmap_boot.c index 4dd269b772..6c98954ff2 100644 --- a/src/arch/x86/mmap_boot.c +++ b/src/arch/x86/mmap_boot.c @@ -53,13 +53,11 @@ int cbfs_boot_region_properties(struct cbfs_props *props) header.magic = ntohl(header.magic); header.romsize = ntohl(header.romsize); header.bootblocksize = ntohl(header.bootblocksize); - header.align = ntohl(header.align); header.offset = ntohl(header.offset); if (header.magic != CBFS_HEADER_MAGIC) return -1; - props->align = header.align; props->offset = header.offset; if (CONFIG_ROM_SIZE != header.romsize) props->size = CONFIG_ROM_SIZE; @@ -67,7 +65,7 @@ int cbfs_boot_region_properties(struct cbfs_props *props) props->size = header.romsize; props->size -= props->offset; props->size -= header.bootblocksize; - props->size = ALIGN_DOWN(props->size, props->align); + props->size = ALIGN_DOWN(props->size, 64); printk(BIOS_DEBUG, "CBFS @ %zx size %zx\n", props->offset, props->size); diff --git a/src/arch/x86/walkcbfs.S b/src/arch/x86/walkcbfs.S index 60eb8b53b0..9c26d3c9a9 100644 --- a/src/arch/x86/walkcbfs.S +++ b/src/arch/x86/walkcbfs.S @@ -7,6 +7,9 @@ #define CBFS_HEADER_ALIGN (CBFS_HEADER_BOOTBLOCKSIZE + 4) #define CBFS_HEADER_OFFSET (CBFS_HEADER_ALIGN + 4) +/* we use this instead of CBFS_HEADER_ALIGN because the latter is retired. */ +#define CBFS_ALIGNMENT 64 + #define CBFS_FILE_MAGIC 0 #define CBFS_FILE_LEN (CBFS_FILE_MAGIC + 8) #define CBFS_FILE_TYPE (CBFS_FILE_LEN + 4) @@ -74,13 +77,9 @@ tryharder: mov CBFS_FILE_LEN(%ebx), %edi bswap %edi add %edi, %ecx - mov CBFS_HEADER_PTR, %edi - mov CBFS_HEADER_ALIGN(%edi), %edi - bswap %edi - sub $1, %edi - add %edi, %ecx - not %edi - and %edi, %ecx + /* round by 64 bytes */ + add $(CBFS_ALIGNMENT - 1), %ecx + and $~(CBFS_ALIGNMENT - 1), %ecx /* if oldaddr >= addr, leave */ cmp %ebx, %ecx @@ -106,11 +105,8 @@ out: searchfile: - /* if filemagic isn't found, move forward cbfs_header->align bytes */ - mov CBFS_HEADER_PTR, %edi - mov CBFS_HEADER_ALIGN(%edi), %edi - bswap %edi - add %edi, %ebx + /* if filemagic isn't found, move forward 64 bytes */ + add $CBFS_ALIGNMENT, %ebx jmp check_for_exit filemagic: -- cgit v1.2.3