Add alternate bitfield padding option

Adds configuration option CFG_TUSB_ALT_BIT_PACKING_ALIGNMENT, which
substitutes bitfield variable " : 0" padding syntax with an unused
variable of size equal to the remaining number of bits.

This change resolves aligned access issues for some platforms.

Default behavior is original if the option is not explicitly enabled.
This commit is contained in:
Jeremiah McCarthy
2021-02-16 10:40:06 -05:00
parent 09868434cd
commit f8fbc0930b
6 changed files with 56 additions and 9 deletions

View File

@@ -1,4 +1,4 @@
/*
/*
* The MIT License (MIT)
*
* Copyright (c) 2019 Ha Thach (tinyusb.org)
@@ -208,7 +208,11 @@ typedef volatile struct
uint32_t interrupt_routing : 1;
uint32_t remote_wakeup_connected : 1;
uint32_t remote_wakeup_enale : 1;
uint32_t : 0;
#if CFG_TUSB_ALT_BIT_PACKING_ALIGNMENT
uint32_t unused : 21;
#else
uint32_t : 0;
#endif /* CFG_TUSB_ALT_BIT_PACKING_ALIGNMENT */
}control_bit;
};
@@ -276,7 +280,11 @@ typedef volatile struct
uint32_t port_suspend_status_change : 1;
uint32_t port_over_current_indicator_change : 1;
uint32_t port_reset_status_change : 1;
#if CFG_TUSB_ALT_BIT_PACKING_ALIGNMENT
uint32_t unused : 11;
#else
uint32_t : 0;
#endif /* CFG_TUSB_ALT_BIT_PACKING_ALIGNMENT */
}rhport_status_bit[2];
};
}ohci_registers_t;