summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKinsey Moore <kinsey.moore@oarcorp.com>2021-02-01 10:04:59 -0600
committerJoel Sherrill <joel@rtems.org>2021-03-10 08:57:59 -0600
commit0c60fe524eef22ce8443c507c4feccd9f02dc550 (patch)
treeb7080e3859bb3e92730bfbf13c2033ca9e611d35
parentehci_pci: Add to build system (diff)
downloadrtems-libbsd-0c60fe524eef22ce8443c507c4feccd9f02dc550.tar.bz2
rtembsd: Fix alignment of allocations for 64bit
Alignment on 64bit hardware is strict in comparison to running in an emulator. This resolves an alignment exception when allocating memory on real hardware.
-rw-r--r--rtemsbsd/rtems/rtems-program.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/rtemsbsd/rtems/rtems-program.c b/rtemsbsd/rtems/rtems-program.c
index 204ed248..370609d4 100644
--- a/rtemsbsd/rtems/rtems-program.c
+++ b/rtemsbsd/rtems/rtems-program.c
@@ -479,12 +479,13 @@ rtems_bsd_program_alloc(size_t size, void *org_ptr)
void *ptr = NULL;
size_t size_with_list;
size_t size_alligned;
+ size_t alignment = sizeof(void*);
if (prog_ctrl != NULL) {
/* align the end to the next word address */
size_alligned = size;
- if ((size_alligned & 0x3) != 0) {
- size_alligned = (size_alligned | 0x03) + 1;
+ if ((size_alligned & (alignment - 1)) != 0) {
+ size_alligned = (size_alligned | (alignment - 1)) + 1;
}
size_with_list = size_alligned +
sizeof(struct program_allocmem_item);