forked from Imagelibrary/rtems
score: Clarify CPU port alignment requirements
This commit is contained in:
@@ -733,7 +733,10 @@ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* CPU's worst alignment requirement for data types on a byte boundary. This
|
* CPU's worst alignment requirement for data types on a byte boundary. This
|
||||||
* alignment does not take into account the requirements for the stack.
|
* alignment does not take into account the requirements for the stack. It
|
||||||
|
* must be a power of two greater than or equal to two. The power of two
|
||||||
|
* requirement makes it possible to align values easily using simple bit
|
||||||
|
* operations.
|
||||||
*
|
*
|
||||||
* Port Specific Information:
|
* Port Specific Information:
|
||||||
*
|
*
|
||||||
@@ -749,12 +752,11 @@ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context;
|
|||||||
* @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is strict enough for
|
* @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is strict enough for
|
||||||
* the heap, then this should be set to @ref CPU_ALIGNMENT.
|
* the heap, then this should be set to @ref CPU_ALIGNMENT.
|
||||||
*
|
*
|
||||||
* NOTE: This does not have to be a power of 2 although it should be
|
* NOTE: It must be a power of two greater than or equal to two. The
|
||||||
* a multiple of 2 greater than or equal to 2. The requirement
|
* requirement to be a multiple of two is because the heap uses the
|
||||||
* to be a multiple of 2 is because the heap uses the least
|
* least significant field of the front and back flags to indicate that
|
||||||
* significant field of the front and back flags to indicate
|
* a block is in use or free. So you do not want any odd length blocks
|
||||||
* that a block is in use or free. So you do not want any odd
|
* really putting length data in that bit.
|
||||||
* length blocks really putting length data in that bit.
|
|
||||||
*
|
*
|
||||||
* On byte oriented architectures, @ref CPU_HEAP_ALIGNMENT normally will
|
* On byte oriented architectures, @ref CPU_HEAP_ALIGNMENT normally will
|
||||||
* have to be greater or equal to than @ref CPU_ALIGNMENT to ensure that
|
* have to be greater or equal to than @ref CPU_ALIGNMENT to ensure that
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2012 embedded brains GmbH. All rights reserved.
|
* Copyright (c) 2012-2014 embedded brains GmbH. All rights reserved.
|
||||||
*
|
*
|
||||||
* embedded brains GmbH
|
* embedded brains GmbH
|
||||||
* Obere Lagerstr. 30
|
* Dornierstr. 4
|
||||||
* 82178 Puchheim
|
* 82178 Puchheim
|
||||||
* Germany
|
* Germany
|
||||||
* <rtems@embedded-brains.de>
|
* <rtems@embedded-brains.de>
|
||||||
@@ -21,6 +21,37 @@
|
|||||||
#define _RTEMS_PERCPU_DEFINE_OFFSETS
|
#define _RTEMS_PERCPU_DEFINE_OFFSETS
|
||||||
#include <rtems/score/percpu.h>
|
#include <rtems/score/percpu.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* In case a CPU port needs another alignment, then add this here and make sure
|
||||||
|
* it is a power of two greater than or equal to two.
|
||||||
|
*/
|
||||||
|
RTEMS_STATIC_ASSERT(
|
||||||
|
CPU_ALIGNMENT == 2
|
||||||
|
|| CPU_ALIGNMENT == 4
|
||||||
|
|| CPU_ALIGNMENT == 8
|
||||||
|
|| CPU_ALIGNMENT == 16
|
||||||
|
|| CPU_ALIGNMENT == 32,
|
||||||
|
CPU_ALIGNMENT
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* In case a CPU port needs another heap alignment, then add this here and make
|
||||||
|
* sure it is a power of two greater than or equal to two.
|
||||||
|
*/
|
||||||
|
RTEMS_STATIC_ASSERT(
|
||||||
|
CPU_HEAP_ALIGNMENT == 2
|
||||||
|
|| CPU_HEAP_ALIGNMENT == 4
|
||||||
|
|| CPU_HEAP_ALIGNMENT == 8
|
||||||
|
|| CPU_HEAP_ALIGNMENT == 16
|
||||||
|
|| CPU_HEAP_ALIGNMENT == 32,
|
||||||
|
CPU_HEAP_ALIGNMENT_0
|
||||||
|
);
|
||||||
|
|
||||||
|
RTEMS_STATIC_ASSERT(
|
||||||
|
CPU_HEAP_ALIGNMENT >= CPU_ALIGNMENT,
|
||||||
|
CPU_HEAP_ALIGNMENT_1
|
||||||
|
);
|
||||||
|
|
||||||
RTEMS_STATIC_ASSERT(
|
RTEMS_STATIC_ASSERT(
|
||||||
sizeof(void *) == CPU_SIZEOF_POINTER,
|
sizeof(void *) == CPU_SIZEOF_POINTER,
|
||||||
CPU_SIZEOF_POINTER
|
CPU_SIZEOF_POINTER
|
||||||
|
|||||||
Reference in New Issue
Block a user