Word-align the host memory map

This fixes unaligned access exceptions when totally-unrelated code
changes happen to move around host_command.c's global variables.

BUG=chrome-os-partner:21578
BRANCH=none
TEST=add a ccprintf() call to host_command.c; no longer causes an exception

Change-Id: I5407e5631a08ea647dc40e5bd9c7bd101868ced0
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/64233
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
This commit is contained in:
Randall Spangler
2013-08-01 10:27:33 -07:00
committed by ChromeBot
parent 8e28efa7ac
commit bebfb9431e
2 changed files with 12 additions and 3 deletions

View File

@@ -28,7 +28,11 @@
static struct host_cmd_handler_args *pending_args;
#ifndef CONFIG_LPC
static uint8_t host_memmap[EC_MEMMAP_SIZE];
/*
* Simulated memory map. Must be word-aligned, because some of the elements
* in the memory map are words.
*/
static uint8_t host_memmap[EC_MEMMAP_SIZE] __aligned(4);
#endif
static enum {

View File

@@ -32,9 +32,14 @@
#define REG16(addr) (*(volatile uint16_t *)(addr))
/*
* Define __packed if someone hasn't beat us to it. Linux kernel style
* checking prefers __packed over __attribute__((packed)).
* Define __aligned(n) and __packed if someone hasn't beat us to it. Linux
* kernel style checking prefers these over __attribute__((packed)) and
* __attribute__((aligned(n))).
*/
#ifndef __aligned
#define __aligned(n) __attribute__((aligned(n)))
#endif
#ifndef __packed
#define __packed __attribute__((packed))
#endif