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.
This commit is contained in:
Kinsey Moore 2021-02-01 10:04:59 -06:00 committed by Joel Sherrill
parent 5b50a5181a
commit 0c60fe524e

View File

@ -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);