Skip to content

Commit

Permalink
romfs/tools: Remove superfluous union around the rom header struct
Browse files Browse the repository at this point in the history
Accessing the struct with memset and memcpy can also be done without the
union wrapper. While we're at it, also remove the FLASHFS_HEADER_DATA_SIZE
macre and use sizeof(stHeader) instead.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
  • Loading branch information
huth authored and aik committed Jul 20, 2018
1 parent 5cd96a5 commit d4443f1
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 17 deletions.
1 change: 0 additions & 1 deletion include/calculatecrc.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
#define FLASHFS_HEADER_SIZE_ADDR 0x08 // uint64_t position of total flash header size value

#define FLASHFS_ROMADDR 0x00 // uint64_t position of pointer to next file
#define FLASHFS_HEADER_DATA_SIZE 0x68 // 104 bytes of total header data size
#define CRC_METHODE Ethernet_32 // define the CRC genarator (CRC 16 bit to 64 is supported)

//--- header format ---------------------------------
Expand Down
29 changes: 13 additions & 16 deletions romfs/tools/create_crc.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
* IBM Corporation - initial implementation
*****************************************************************************/

#include <assert.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
Expand Down Expand Up @@ -71,21 +72,18 @@ createHeaderImage(int notime)
char dastr[16] = { 0, };
unsigned long long da = 0;

union {
unsigned char pcArray[FLASHFS_HEADER_DATA_SIZE];
struct stH stHeader;
} uHeader;
struct stH stHeader;

/* initialize Header */
memset(uHeader.pcArray, 0x00, FLASHFS_HEADER_DATA_SIZE);
memset(&stHeader, 0x00, sizeof(stHeader));

/* read driver info */
if (NULL != (pcVersion = getenv("DRIVER_NAME"))) {
strncpy(uHeader.stHeader.version, pcVersion, 16);
strncpy(stHeader.version, pcVersion, 16);
} else if (NULL != (pcVersion = getenv("USER"))) {
strncpy(uHeader.stHeader.version, pcVersion, 16);
strncpy(stHeader.version, pcVersion, 16);
} else if (pcVersion == NULL) {
strncpy(uHeader.stHeader.version, "No known user!", 16);
strncpy(stHeader.version, "No known user!", 16);
}

if (!notime) {
Expand All @@ -104,18 +102,18 @@ createHeaderImage(int notime)
}
da = cpu_to_be64(strtoll(dastr, NULL, 16));
}
memcpy(uHeader.stHeader.date, &da, 8);
memcpy(stHeader.date, &da, 8);

/* write Magic value into data stream */
strncpy(uHeader.stHeader.magic, FLASHFS_MAGIC, 8);
strncpy(stHeader.magic, FLASHFS_MAGIC, 8);
/* write platform name into data stream */
strcpy(uHeader.stHeader.platform_name, FLASHFS_PLATFORM_MAGIC);
strcpy(stHeader.platform_name, FLASHFS_PLATFORM_MAGIC);
/* write platform revision into data stream */
strcpy(uHeader.stHeader.platform_revision, FLASHFS_PLATFORM_REVISION);
strcpy(stHeader.platform_revision, FLASHFS_PLATFORM_REVISION);


/* fill end of file info (8 bytes of FF) into data stream */
uHeader.stHeader.ui64FileEnd = -1;
stHeader.ui64FileEnd = -1;

/* read address of next file and address of header date, both are 64 bit values */
ui64RomAddr = 0;
Expand All @@ -129,7 +127,7 @@ createHeaderImage(int notime)

/* calculate final flash-header-size and flash-file-size */
/* calculate end addr of header */
ui64globalHeaderSize = (uint32_t) ui64DataAddr + (uint32_t) FLASHFS_HEADER_DATA_SIZE;
ui64globalHeaderSize = (uint32_t) ui64DataAddr + sizeof(stHeader);
/* cut 64 bit to place CRC for File-End */
ui64globalHeaderSize -= 8;
/* add 64 bit to place CRC behind File-End */
Expand All @@ -143,8 +141,7 @@ createHeaderImage(int notime)
/* fill free space in Header with zeros */
memset(&pucFileStream[ui64DataAddr], 0, (ui64RomAddr - ui64DataAddr));
/* place data to header */
memcpy(&pucFileStream[ui64DataAddr], uHeader.pcArray,
FLASHFS_HEADER_DATA_SIZE);
memcpy(&pucFileStream[ui64DataAddr], &stHeader, sizeof(stHeader));

/* insert header length into data stream */
*(uint64_t *) (pucFileStream + FLASHFS_HEADER_SIZE_ADDR) =
Expand Down

0 comments on commit d4443f1

Please sign in to comment.