aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Cully <bjc@kublai.com>2019-07-24 17:37:22 -0400
committerBrian Cully <bjc@kublai.com>2019-07-24 17:37:22 -0400
commit5b48a5c2f5526f088187fa341f64368994c9f517 (patch)
tree11728c1b24cf7e01ed568341ca6d5f1c86f5e104
parent87015d0256e5c3888681da6d469e515b58efbb5f (diff)
downloadsamd21-demo-5b48a5c2f5526f088187fa341f64368994c9f517.tar.gz
samd21-demo-5b48a5c2f5526f088187fa341f64368994c9f517.zip
Remove packed structs.
These were causing hard faults when trying to deref a borrow, presumably because of a lack of field alignment. This does mean structs aren't the correct size (e.g., USBConfigurationDescription is 10 bytes instead of 9 on thumb6), so another solution needs to be fonud for getting data in and out of structs with a minimum of overhead.
-rw-r--r--app/src/usb/pipe.rs2
-rw-r--r--app/src/usb/usbproto.rs10
2 files changed, 6 insertions, 6 deletions
diff --git a/app/src/usb/pipe.rs b/app/src/usb/pipe.rs
index 908c8e5..2efb29b 100644
--- a/app/src/usb/pipe.rs
+++ b/app/src/usb/pipe.rs
@@ -465,7 +465,7 @@ impl PipeDesc {
}
#[derive(Clone, Copy, Debug)]
-#[repr(C, packed)]
+#[repr(C)]
// 16 bytes per bank.
pub(crate) struct BankDesc {
pub addr: Addr,
diff --git a/app/src/usb/usbproto.rs b/app/src/usb/usbproto.rs
index 9a86ed7..9c1dbcb 100644
--- a/app/src/usb/usbproto.rs
+++ b/app/src/usb/usbproto.rs
@@ -7,7 +7,7 @@
// documentation.
#[derive(Copy, Clone, Debug, Default)]
-#[repr(C, packed)]
+#[repr(C)]
pub struct USBDeviceDescriptor {
pub b_length: u8,
pub b_descriptor_type: u8,
@@ -26,7 +26,7 @@ pub struct USBDeviceDescriptor {
}
#[derive(Copy, Clone, Debug, Default)]
-#[repr(C, packed)]
+#[repr(C)]
pub struct USBConfigurationDescriptor {
pub b_length: u8,
pub b_descriptor_type: u8,
@@ -39,7 +39,7 @@ pub struct USBConfigurationDescriptor {
}
#[derive(Copy, Clone, Debug, Default)]
-#[repr(C, packed)]
+#[repr(C)]
pub struct USBInterfaceDescriptor {
pub b_length: u8,
pub b_descriptor_type: u8,
@@ -53,7 +53,7 @@ pub struct USBInterfaceDescriptor {
}
#[derive(Copy, Clone, Debug, Default)]
-#[repr(C, packed)]
+#[repr(C)]
pub struct USBEndpointDescriptor {
pub b_length: u8,
pub b_descriptor_type: u8,
@@ -64,7 +64,7 @@ pub struct USBEndpointDescriptor {
}
#[derive(Copy, Clone, Debug)]
-#[repr(C, packed)]
+#[repr(C)]
pub struct USBSetupPacket {
pub bm_request_type: BMRequestType,
pub b_request: USBRequest,