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 /rtemsbsd | |
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.
Diffstat (limited to 'rtemsbsd')
-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); |