diff options
author | Patrick Georgi <pgeorgi@chromium.org> | 2015-07-14 22:28:27 +0200 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2015-07-15 16:34:37 +0200 |
commit | 4d3e4c421e94814884d1ff035a4c4ec80d4b33b2 (patch) | |
tree | 714cf2a02ad6ee568928084df4c5cc36530ae96f /src/arch/x86/walkcbfs.S | |
parent | 45acb34ffce5ffef1e574305b4e18af6d26df46b (diff) |
cbfs: hardcode file alignment
Assume that it's 64 byte.
Change-Id: I168facd92f64c2cf99c26c350c60317807a4aed4
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Reviewed-on: http://review.coreboot.org/10919
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/arch/x86/walkcbfs.S')
-rw-r--r-- | src/arch/x86/walkcbfs.S | 20 |
1 files changed, 8 insertions, 12 deletions
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: |