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