[PATCH v1 1/7] rtembsd: Fix alignment of allocations for 64bit

Chris Johns chrisj at rtems.org
Tue Mar 9 02:04:07 UTC 2021


OK for 1 to 7 from me.

In regards to the if_ cgem driver, will any be posted up stream?

Chris

On 9/3/21 10:27 am, Kinsey Moore wrote:
> Alignment on 64bit hardware is strict in comparison to running in an
> emulator. This resolves an alignment exception when allocating memory on
> real hardware.
> ---
>  rtemsbsd/rtems/rtems-program.c | 5 +++--
>  1 file 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);
> 


More information about the devel mailing list