forked from Imagelibrary/rtems
score: Delete CPU_USE_GENERIC_BITFIELD_DATA
Rename __log2table into _Bitfield_Leading_zeros since it acually returns the count of leading zeros of an 8-bit integer. The value for zero is a bit odd. Provide it unconditionally.
This commit is contained in:
@@ -200,8 +200,6 @@
|
|||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA TRUE
|
|
||||||
|
|
||||||
#define CPU_PER_CPU_CONTROL_SIZE 0
|
#define CPU_PER_CPU_CONTROL_SIZE 0
|
||||||
|
|
||||||
#define CPU_MAXIMUM_PROCESSORS 32
|
#define CPU_MAXIMUM_PROCESSORS 32
|
||||||
|
|||||||
@@ -851,8 +851,6 @@ void _CPU_Context_Initialize(
|
|||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA TRUE
|
|
||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -680,8 +680,6 @@ void _CPU_Context_Initialize(
|
|||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA TRUE
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* There is no CPU specific per-CPU state */
|
/* There is no CPU specific per-CPU state */
|
||||||
} CPU_Per_CPU_control;
|
} CPU_Per_CPU_control;
|
||||||
|
|||||||
@@ -549,7 +549,6 @@ extern void _CPU_Fatal_halt(uint32_t source, uint32_t error)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE FALSE
|
#define CPU_USE_GENERIC_BITFIELD_CODE FALSE
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA FALSE
|
|
||||||
|
|
||||||
#define _CPU_Bitfield_Find_first_bit( _value, _output ) \
|
#define _CPU_Bitfield_Find_first_bit( _value, _output ) \
|
||||||
{ \
|
{ \
|
||||||
|
|||||||
@@ -883,8 +883,6 @@ extern char _gp[];
|
|||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA TRUE
|
|
||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -871,8 +871,6 @@ void _CPU_Context_Restart_self(
|
|||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA TRUE
|
|
||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -491,7 +491,6 @@ void *_CPU_Thread_Idle_body( uintptr_t ignored );
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE FALSE
|
#define CPU_USE_GENERIC_BITFIELD_CODE FALSE
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA FALSE
|
|
||||||
|
|
||||||
#if ( M68K_HAS_BFFFO != 1 )
|
#if ( M68K_HAS_BFFFO != 1 )
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -884,8 +884,6 @@ extern void mips_break( int error );
|
|||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA TRUE
|
|
||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -680,8 +680,6 @@ uint32_t _CPU_ISR_Get_level( void );
|
|||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA TRUE
|
|
||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -105,8 +105,6 @@ extern "C" {
|
|||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA TRUE
|
|
||||||
|
|
||||||
#define CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK 0
|
#define CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK 0
|
||||||
|
|
||||||
#define CPU_PER_CPU_CONTROL_SIZE 0
|
#define CPU_PER_CPU_CONTROL_SIZE 0
|
||||||
|
|||||||
@@ -37,17 +37,17 @@ static inline unsigned _Nios2_Count_leading_zeros( uint32_t p )
|
|||||||
|
|
||||||
if ( p <= 0xffffu ) {
|
if ( p <= 0xffffu ) {
|
||||||
if ( p < 0x100u ) {
|
if ( p < 0x100u ) {
|
||||||
bitIdx = __log2table[ p ] + 24u;
|
bitIdx = _Bitfield_Leading_zeros[ p ] + 24u;
|
||||||
} else {
|
} else {
|
||||||
bitIdx = __log2table[ p >> 8u ] + 16u;
|
bitIdx = _Bitfield_Leading_zeros[ p >> 8u ] + 16u;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
p >>= 16u;
|
p >>= 16u;
|
||||||
|
|
||||||
if ( p < 0x100u ) {
|
if ( p < 0x100u ) {
|
||||||
bitIdx = __log2table[ p ] + 8u;
|
bitIdx = _Bitfield_Leading_zeros[ p ] + 8u;
|
||||||
} else {
|
} else {
|
||||||
bitIdx = __log2table[ p >> 8u ];
|
bitIdx = _Bitfield_Leading_zeros[ p >> 8u ];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1011,16 +1011,6 @@ uint32_t _CPU_ISR_Get_level( void );
|
|||||||
*/
|
*/
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
||||||
|
|
||||||
/**
|
|
||||||
* This definition is set to TRUE if the port uses the data tables provided
|
|
||||||
* by the generic bitfield manipulation implementation.
|
|
||||||
* This can occur when actually using the generic bitfield manipulation
|
|
||||||
* implementation or when implementing the same algorithm in assembly
|
|
||||||
* language for improved performance. It is unlikely that a port will use
|
|
||||||
* the data if it has a bitfield scan instruction.
|
|
||||||
*/
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA TRUE
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This routine sets @a _output to the bit number of the first bit
|
* This routine sets @a _output to the bit number of the first bit
|
||||||
* set in @a _value. @a _value is of CPU dependent type
|
* set in @a _value. @a _value is of CPU dependent type
|
||||||
|
|||||||
@@ -675,8 +675,6 @@ void _CPU_Context_Initialize(
|
|||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA TRUE
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* There is no CPU specific per-CPU state */
|
/* There is no CPU specific per-CPU state */
|
||||||
} CPU_Per_CPU_control;
|
} CPU_Per_CPU_control;
|
||||||
|
|||||||
@@ -922,8 +922,6 @@ void _CPU_Context_Initialize(
|
|||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE FALSE
|
#define CPU_USE_GENERIC_BITFIELD_CODE FALSE
|
||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA FALSE
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This routine sets _output to the bit number of the first bit
|
* This routine sets _output to the bit number of the first bit
|
||||||
* set in _value. _value is of CPU dependent type Priority_bit_map_Word.
|
* set in _value. _value is of CPU dependent type Priority_bit_map_Word.
|
||||||
|
|||||||
@@ -652,8 +652,6 @@ void _CPU_Context_Initialize(
|
|||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA TRUE
|
|
||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -1113,12 +1113,6 @@ extern void _CPU_Fatal_halt(uint32_t source, uint32_t error)
|
|||||||
* CPU model does not have a scan instruction.
|
* CPU model does not have a scan instruction.
|
||||||
*/
|
*/
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
||||||
/**
|
|
||||||
* The SPARC port uses the generic C algorithm for bitfield scan if the
|
|
||||||
* CPU model does not have a scan instruction. Thus is needs the generic
|
|
||||||
* data table used by that algorithm.
|
|
||||||
*/
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA TRUE
|
|
||||||
#else
|
#else
|
||||||
#error "scan instruction not currently supported by RTEMS!!"
|
#error "scan instruction not currently supported by RTEMS!!"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -891,7 +891,6 @@ void _CPU_Context_Initialize(
|
|||||||
|
|
||||||
#if ( SPARC_HAS_BITSCAN == 0 )
|
#if ( SPARC_HAS_BITSCAN == 0 )
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA TRUE
|
|
||||||
#else
|
#else
|
||||||
#error "scan instruction not currently supported by RTEMS!!"
|
#error "scan instruction not currently supported by RTEMS!!"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -835,8 +835,6 @@ void _CPU_Context_Initialize(
|
|||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
#define CPU_USE_GENERIC_BITFIELD_CODE TRUE
|
||||||
|
|
||||||
#define CPU_USE_GENERIC_BITFIELD_DATA TRUE
|
|
||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -33,16 +33,12 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
/**@{**/
|
/**@{**/
|
||||||
|
|
||||||
#if ( CPU_USE_GENERIC_BITFIELD_DATA == TRUE )
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This table is used by the generic bitfield routines to perform
|
* This table is used by the generic bitfield routines to perform
|
||||||
* a highly optimized bit scan without the use of special CPU
|
* a highly optimized bit scan without the use of special CPU
|
||||||
* instructions.
|
* instructions.
|
||||||
*/
|
*/
|
||||||
extern const unsigned char __log2table[256];
|
extern const unsigned char _Bitfield_Leading_zeros[256];
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Gets the @a _bit_number of the first bit set in the specified value.
|
* @brief Gets the @a _bit_number of the first bit set in the specified value.
|
||||||
@@ -70,7 +66,7 @@ extern const unsigned char __log2table[256];
|
|||||||
#define _Bitfield_Find_first_bit( _value, _bit_number ) \
|
#define _Bitfield_Find_first_bit( _value, _bit_number ) \
|
||||||
{ \
|
{ \
|
||||||
register uint32_t __value = (uint32_t) (_value); \
|
register uint32_t __value = (uint32_t) (_value); \
|
||||||
register const unsigned char *__p = __log2table; \
|
register const unsigned char *__p = _Bitfield_Leading_zeros; \
|
||||||
\
|
\
|
||||||
if ( __value < 0x100 ) \
|
if ( __value < 0x100 ) \
|
||||||
(_bit_number) = (Priority_bit_map_Word)( __p[ __value ] + 8 ); \
|
(_bit_number) = (Priority_bit_map_Word)( __p[ __value ] + 8 ); \
|
||||||
|
|||||||
@@ -21,8 +21,7 @@
|
|||||||
|
|
||||||
#include <rtems/score/prioritybitmapimpl.h>
|
#include <rtems/score/prioritybitmapimpl.h>
|
||||||
|
|
||||||
#if ( CPU_USE_GENERIC_BITFIELD_DATA == TRUE )
|
const unsigned char _Bitfield_Leading_zeros[256] = {
|
||||||
const unsigned char __log2table[256] = {
|
|
||||||
7, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4,
|
7, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||||
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
||||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||||||
@@ -40,4 +39,3 @@ const unsigned char __log2table[256] = {
|
|||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
|||||||
Reference in New Issue
Block a user