tools: kwbimage: Mark all BootROM structures __packed

These structures must have specific size without padding, so mark them as
packed via the de-facto standard macro __packed. Also replace PACKED
macro.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
This commit is contained in:
Pali Rohár 2021-07-23 11:14:14 +02:00 committed by Stefan Roese
parent b4f3cc2c42
commit a107c61b41
2 changed files with 19 additions and 19 deletions

View file

@ -11,6 +11,12 @@
#include <compiler.h> #include <compiler.h>
#include <stdint.h> #include <stdint.h>
#ifdef __GNUC__
#define __packed __attribute((packed))
#else
#define __packed
#endif
#define KWBIMAGE_MAX_CONFIG ((0x1dc - 0x20)/sizeof(struct reg_config)) #define KWBIMAGE_MAX_CONFIG ((0x1dc - 0x20)/sizeof(struct reg_config))
#define MAX_TEMPBUF_LEN 32 #define MAX_TEMPBUF_LEN 32
@ -46,12 +52,12 @@ struct main_hdr_v0 {
uint16_t rsvd2; /* 0x1C-0x1D */ uint16_t rsvd2; /* 0x1C-0x1D */
uint8_t ext; /* 0x1E */ uint8_t ext; /* 0x1E */
uint8_t checksum; /* 0x1F */ uint8_t checksum; /* 0x1F */
}; } __packed;
struct ext_hdr_v0_reg { struct ext_hdr_v0_reg {
uint32_t raddr; uint32_t raddr;
uint32_t rdata; uint32_t rdata;
}; } __packed;
#define EXT_HDR_V0_REG_COUNT ((0x1dc - 0x20) / sizeof(struct ext_hdr_v0_reg)) #define EXT_HDR_V0_REG_COUNT ((0x1dc - 0x20) / sizeof(struct ext_hdr_v0_reg))
@ -61,12 +67,12 @@ struct ext_hdr_v0 {
struct ext_hdr_v0_reg rcfg[EXT_HDR_V0_REG_COUNT]; struct ext_hdr_v0_reg rcfg[EXT_HDR_V0_REG_COUNT];
uint8_t reserved2[7]; uint8_t reserved2[7];
uint8_t checksum; uint8_t checksum;
}; } __packed;
struct kwb_header { struct kwb_header {
struct main_hdr_v0 kwb_hdr; struct main_hdr_v0 kwb_hdr;
struct ext_hdr_v0 kwb_exthdr; struct ext_hdr_v0 kwb_exthdr;
}; } __packed;
/* Structure of the main header, version 1 (Armada 370/38x/XP) */ /* Structure of the main header, version 1 (Armada 370/38x/XP) */
struct main_hdr_v1 { struct main_hdr_v1 {
@ -87,7 +93,7 @@ struct main_hdr_v1 {
uint16_t reserved5; /* 0x1C-0x1D */ uint16_t reserved5; /* 0x1C-0x1D */
uint8_t ext; /* 0x1E */ uint8_t ext; /* 0x1E */
uint8_t checksum; /* 0x1F */ uint8_t checksum; /* 0x1F */
}; } __packed;
/* /*
* Main header options * Main header options
@ -109,21 +115,21 @@ struct opt_hdr_v1 {
uint8_t headersz_msb; uint8_t headersz_msb;
uint16_t headersz_lsb; uint16_t headersz_lsb;
char data[0]; char data[0];
}; } __packed;
/* /*
* Public Key data in DER format * Public Key data in DER format
*/ */
struct pubkey_der_v1 { struct pubkey_der_v1 {
uint8_t key[524]; uint8_t key[524];
}; } __packed;
/* /*
* Signature (RSA 2048) * Signature (RSA 2048)
*/ */
struct sig_v1 { struct sig_v1 {
uint8_t sig[256]; uint8_t sig[256];
}; } __packed;
/* /*
* Structure of secure header (Armada 38x) * Structure of secure header (Armada 38x)
@ -146,7 +152,7 @@ struct secure_hdr_v1 {
uint8_t next; /* 0x25E0 */ uint8_t next; /* 0x25E0 */
uint8_t reserved4; /* 0x25E1 */ uint8_t reserved4; /* 0x25E1 */
uint16_t reserved5; /* 0x25E2 - 0x25E3 */ uint16_t reserved5; /* 0x25E2 - 0x25E3 */
}; } __packed;
/* /*
* Structure of register set * Structure of register set
@ -159,14 +165,14 @@ struct register_set_hdr_v1 {
struct { struct {
uint32_t address; /* 0x4+8*N - 0x7+8*N */ uint32_t address; /* 0x4+8*N - 0x7+8*N */
uint32_t value; /* 0x8+8*N - 0xB+8*N */ uint32_t value; /* 0x8+8*N - 0xB+8*N */
} entry; } __packed entry;
struct { struct {
uint8_t next; /* 0xC+8*N */ uint8_t next; /* 0xC+8*N */
uint8_t delay; /* 0xD+8*N */ uint8_t delay; /* 0xD+8*N */
uint16_t reserved; /* 0xE+8*N - 0xF+8*N */ uint16_t reserved; /* 0xE+8*N - 0xF+8*N */
} last_entry; } __packed last_entry;
} data[]; } data[];
}; } __packed;
/* /*
* Value 0 in register_set_hdr_v1 delay field is special. * Value 0 in register_set_hdr_v1 delay field is special.

View file

@ -26,12 +26,6 @@
#include <sys/mman.h> #include <sys/mman.h>
#include <sys/stat.h> #include <sys/stat.h>
#ifdef __GNUC__
#define PACKED __attribute((packed))
#else
#define PACKED
#endif
/* /*
* Marvell BootROM UART Sensing * Marvell BootROM UART Sensing
*/ */
@ -68,7 +62,7 @@ struct kwboot_block {
uint8_t _pnum; uint8_t _pnum;
uint8_t data[128]; uint8_t data[128];
uint8_t csum; uint8_t csum;
} PACKED; } __packed;
#define KWBOOT_BLK_RSP_TIMEO 1000 /* ms */ #define KWBOOT_BLK_RSP_TIMEO 1000 /* ms */