diff options
author | Kinsey Moore <kinsey.moore@oarcorp.com> | 2021-02-01 10:04:59 -0600 |
---|---|---|
committer | Joel Sherrill <joel@rtems.org> | 2021-03-10 08:57:59 -0600 |
commit | 0c60fe524eef22ce8443c507c4feccd9f02dc550 (patch) | |
tree | b7080e3859bb3e92730bfbf13c2033ca9e611d35 | |
parent | ehci_pci: Add to build system (diff) | |
download | rtems-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.c | 5 |
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); |