Index: uspace/drv/bus/usb/ehci/hw_struct/iso_transfer_descriptor.h
===================================================================
--- uspace/drv/bus/usb/ehci/hw_struct/iso_transfer_descriptor.h	(revision 0539c146a8e401db775ccf05fc1dbf2778451c9e)
+++ uspace/drv/bus/usb/ehci/hw_struct/iso_transfer_descriptor.h	(revision 95f1b8fb04a16c3932f15cfbed3adcd434b47bbb)
@@ -72,5 +72,5 @@
 	/* 64 bit struct only */
 	volatile uint32_t extended_bp[7];
-} itd_t;
+} __attribute__((packed,aligned(32))) itd_t;
 #endif
 /**
Index: uspace/drv/bus/usb/ehci/hw_struct/queue_head.h
===================================================================
--- uspace/drv/bus/usb/ehci/hw_struct/queue_head.h	(revision 0539c146a8e401db775ccf05fc1dbf2778451c9e)
+++ uspace/drv/bus/usb/ehci/hw_struct/queue_head.h	(revision 95f1b8fb04a16c3932f15cfbed3adcd434b47bbb)
@@ -143,5 +143,5 @@
 	/* 64 bit struct only */
 	volatile uint32_t extended_bp[5];
-} qh_t;
+} __attribute__((packed,aligned(32))) qh_t;
 
 static inline void qh_append_qh(qh_t *qh, const qh_t *next)
Index: uspace/drv/bus/usb/ehci/hw_struct/split_iso_transfer_descriptor.h
===================================================================
--- uspace/drv/bus/usb/ehci/hw_struct/split_iso_transfer_descriptor.h	(revision 0539c146a8e401db775ccf05fc1dbf2778451c9e)
+++ uspace/drv/bus/usb/ehci/hw_struct/split_iso_transfer_descriptor.h	(revision 95f1b8fb04a16c3932f15cfbed3adcd434b47bbb)
@@ -89,5 +89,5 @@
 	/* 64 bit struct only */
 	volatile uint32_t extended_bp[2];
-} sitd_t;
+} __attribute__((packed,aligned(32))) sitd_t;
 #endif
 /**
Index: uspace/drv/bus/usb/ehci/hw_struct/transfer_descriptor.h
===================================================================
--- uspace/drv/bus/usb/ehci/hw_struct/transfer_descriptor.h	(revision 0539c146a8e401db775ccf05fc1dbf2778451c9e)
+++ uspace/drv/bus/usb/ehci/hw_struct/transfer_descriptor.h	(revision 95f1b8fb04a16c3932f15cfbed3adcd434b47bbb)
@@ -77,8 +77,5 @@
 	volatile uint32_t extended_bp[5];
 
-	/* TDs must be 32-byte aligned */
-	PADD32 [3];
-
-} __attribute__((packed)) td_t;
+} __attribute__((packed,aligned(32))) td_t;
 
 static_assert(sizeof(td_t) % 32 == 0);
Index: uspace/drv/bus/usb/ohci/hw_struct/endpoint_descriptor.h
===================================================================
--- uspace/drv/bus/usb/ohci/hw_struct/endpoint_descriptor.h	(revision 0539c146a8e401db775ccf05fc1dbf2778451c9e)
+++ uspace/drv/bus/usb/ohci/hw_struct/endpoint_descriptor.h	(revision 95f1b8fb04a16c3932f15cfbed3adcd434b47bbb)
@@ -106,5 +106,5 @@
 #define ED_NEXT_PTR_MASK (0xfffffff0)
 #define ED_NEXT_PTR_SHIFT (0)
-} __attribute__((packed)) ed_t;
+} __attribute__((packed,aligned(32))) ed_t;
 
 void ed_init(ed_t *instance, const endpoint_t *ep, const td_t *td);
Index: uspace/drv/bus/usb/ohci/hw_struct/iso_transfer_descriptor.h
===================================================================
--- uspace/drv/bus/usb/ohci/hw_struct/iso_transfer_descriptor.h	(revision 0539c146a8e401db775ccf05fc1dbf2778451c9e)
+++ uspace/drv/bus/usb/ohci/hw_struct/iso_transfer_descriptor.h	(revision 95f1b8fb04a16c3932f15cfbed3adcd434b47bbb)
@@ -69,5 +69,5 @@
 #define ITD_OFFSET_CC_SHIFT (12)
 
-} __attribute__((packed)) itd_t;
+} __attribute__((packed,aligned(32))) itd_t;
 
 #endif
Index: uspace/drv/bus/usb/ohci/hw_struct/transfer_descriptor.h
===================================================================
--- uspace/drv/bus/usb/ohci/hw_struct/transfer_descriptor.h	(revision 0539c146a8e401db775ccf05fc1dbf2778451c9e)
+++ uspace/drv/bus/usb/ohci/hw_struct/transfer_descriptor.h	(revision 95f1b8fb04a16c3932f15cfbed3adcd434b47bbb)
@@ -90,5 +90,5 @@
 	 */
 	volatile uint32_t be;
-} __attribute__((packed)) td_t;
+} __attribute__((packed,aligned(32))) td_t;
 
 void td_init(td_t *, const td_t *, usb_direction_t, const void *, size_t, int);
Index: uspace/drv/bus/usb/uhci/hw_struct/queue_head.h
===================================================================
--- uspace/drv/bus/usb/uhci/hw_struct/queue_head.h	(revision 0539c146a8e401db775ccf05fc1dbf2778451c9e)
+++ uspace/drv/bus/usb/uhci/hw_struct/queue_head.h	(revision 95f1b8fb04a16c3932f15cfbed3adcd434b47bbb)
@@ -50,5 +50,5 @@
 	/** Pointer to the contained entities (execution controlled by vertical flag*/
 	volatile link_pointer_t element;
-} __attribute__((packed)) qh_t;
+} __attribute__((packed,aligned(16))) qh_t;
 
 /** Initialize queue head structure
Index: uspace/drv/bus/usb/uhci/hw_struct/transfer_descriptor.h
===================================================================
--- uspace/drv/bus/usb/uhci/hw_struct/transfer_descriptor.h	(revision 0539c146a8e401db775ccf05fc1dbf2778451c9e)
+++ uspace/drv/bus/usb/uhci/hw_struct/transfer_descriptor.h	(revision 95f1b8fb04a16c3932f15cfbed3adcd434b47bbb)
@@ -95,5 +95,5 @@
 	 * memory just needs to be aligned. We don't use it anyway.
 	 */
-} __attribute__((packed)) td_t;
+} __attribute__((packed,aligned(16))) td_t;
 
 
