[U-Boot] [PATCH v4] USB: Add align(4) in __attribute__ ((packed)) for struct ehci_hccr and ehci_hcor

Joel A Fernandes agnel.joel at gmail.com
Thu Aug 11 23:22:45 CEST 2011


From: Jason Kridner <jkridner at beagleboard.org>

Switched to align(4) to prevent byte access to soc registers in some gcc versions.

Credits have to go to Laine Walker-Avina <lwalkera at ieee.org> for finding the problem.

Signed-off-by: Jason Kridner <jkridner at beagleboard.org>
Signed-off-by: Joel A Fernandes <agnel.joel at gmail.com>
Cc: Koen Kooi <k-kooi at ti.com>
Cc: Alexander Holler <holler at ahsoftware.de>
Cc: Sandeep Paulraj <s-paulraj at ti.com>
Cc: Igor Grinberg <grinberg at compulab.co.il>
---
Changes for v2:
* Original and v2 were provided by Alexander Holler.
* v1 was http://patchwork.ozlabs.org/patch/89358/
* v2 was http://patchwork.ozlabs.org/patch/89362/

Changes for v3:
* Switched to align(4), rather than remove the attribute, per suggestion
  from Alexander.

Changes for v4:
* Modified commit summary and title to be more accurate

 drivers/usb/host/ehci.h |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index 945ab64..3d0ad0c 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -55,7 +55,7 @@ struct ehci_hccr {
 #define HCS_N_PORTS(p)		(((p) >> 0) & 0xf)
 	uint32_t cr_hccparams;
 	uint8_t cr_hcsp_portrt[8];
-} __attribute__ ((packed));
+} __attribute__ ((packed, aligned(4)));
 
 struct ehci_hcor {
 	uint32_t or_usbcmd;
@@ -85,7 +85,7 @@ struct ehci_hcor {
 #define FLAG_CF		(1 << 0)	/* true:  we'll support "high speed" */
 	uint32_t or_portsc[CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS];
 	uint32_t or_systune;
-} __attribute__ ((packed));
+} __attribute__ ((packed, aligned(4)));
 
 #define USBMODE		0x68		/* USB Device mode */
 #define USBMODE_SDIS	(1 << 3)	/* Stream disable */
-- 
1.7.1



More information about the U-Boot mailing list