Eric Norum sent in new versions of the inline assembly macros which

do not generate warnings for unitialized variables.
This commit is contained in:
Joel Sherrill
1996-05-30 19:29:01 +00:00
parent a96a713c57
commit 53fd6e2979
2 changed files with 17 additions and 82 deletions

View File

@@ -28,8 +28,6 @@ extern "C" {
* in some time critical routines. * in some time critical routines.
*/ */
#define NO_UNINITIALIZED_WARNINGS
#include <rtems/score/m68k.h> #include <rtems/score/m68k.h>
#ifndef ASM #ifndef ASM
#include <rtems/score/m68ktypes.h> #include <rtems/score/m68ktypes.h>
@@ -310,27 +308,9 @@ unsigned32 _CPU_ISR_Get_level( void );
#define CPU_USE_GENERIC_BITFIELD_DATA FALSE #define CPU_USE_GENERIC_BITFIELD_DATA FALSE
#if ( M68K_HAS_BFFFO == 1 ) #if ( M68K_HAS_BFFFO == 1 )
#ifdef NO_UNINITIALIZED_WARNINGS
#define _CPU_Bitfield_Find_first_bit( _value, _output ) \ #define _CPU_Bitfield_Find_first_bit( _value, _output ) \
{ \ asm volatile( "bfffo (%1),#0,#16,%0" : "=d" (_output), "=a" (&_value));
register void *__base = (void *)&(_value); \
\
(_output) = 0; /* avoids warnings */ \
asm volatile( "bfffo (%0),#0,#16,%1" \
: "=a" (__base), "=d" ((_output)) \
: "0" (__base), "1" ((_output)) ) ; \
}
#else
#define _CPU_Bitfield_Find_first_bit( _value, _output ) \
{ \
register void *__base = (void *)&(_value); \
\
asm volatile( "bfffo (%0),#0,#16,%1" \
: "=a" (__base), "=d" ((_output)) \
: "0" (__base), "1" ((_output)) ) ; \
}
#endif
#else #else

View File

@@ -193,15 +193,6 @@ extern "C" {
#endif #endif
/*
* If defined, this causes some of the macros to initialize their
* variables to zero before doing inline assembly. This gets rid
* of compile time warnings at the cost of a little execution time
* in some time critical routines.
*/
#define NO_UNINITIALIZED_WARNINGS
/* /*
* Define the name of the CPU family. * Define the name of the CPU family.
*/ */
@@ -210,78 +201,42 @@ extern "C" {
#ifndef ASM #ifndef ASM
#ifdef NO_UNINITIALIZED_WARNINGS
#define m68k_disable_interrupts( _level ) \ #define m68k_disable_interrupts( _level ) \
{ \ asm volatile ( "movew %%sr,%0\n\t" \
(_level) = 0; /* avoids warnings */ \ "orw #0x0700,%%sr" \
asm volatile ( "movew %%sr,%0 ; \ : "=d" (_level))
orw #0x0700,%%sr" \
: "=d" ((_level)) : "0" ((_level)) \
); \
}
#else
#define m68k_disable_interrupts( _level ) \
{ \
asm volatile ( "movew %%sr,%0 ; \
orw #0x0700,%%sr" \
: "=d" ((_level)) : "0" ((_level)) \
); \
}
#endif
#define m68k_enable_interrupts( _level ) \ #define m68k_enable_interrupts( _level ) \
{ \ asm volatile ( "movew %0,%%sr " : : "d" (_level));
asm volatile ( "movew %0,%%sr " \
: "=d" ((_level)) : "0" ((_level)) \
); \
}
#define m68k_flash_interrupts( _level ) \ #define m68k_flash_interrupts( _level ) \
{ \ asm volatile ( "movew %0,%%sr\n\t" \
asm volatile ( "movew %0,%%sr ; \ "orw #0x0700,%%sr" \
orw #0x0700,%%sr" \ : : "d" (_level))
: "=d" ((_level)) : "0" ((_level)) \
); \
}
#define m68k_get_interrupt_level( _level ) \ #define m68k_get_interrupt_level( _level ) \
do { \ do { \
register unsigned32 _tmpsr = 0; \ register unsigned32 _tmpsr; \
\
asm volatile( "movw %%sr,%0" \
: "=d" (_tmpsr) : "0" (_tmpsr) \
); \
\ \
asm volatile( "movw %%sr,%0" : "=d" (_tmpsr)); \
_level = (_tmpsr & 0x0700) >> 8; \ _level = (_tmpsr & 0x0700) >> 8; \
} while (0) } while (0)
#define m68k_set_interrupt_level( _newlevel ) \ #define m68k_set_interrupt_level( _newlevel ) \
{ \ do { \
register unsigned32 _tmpsr = 0; \ register unsigned32 _tmpsr; \
\
asm volatile( "movw %%sr,%0" \
: "=d" (_tmpsr) : "0" (_tmpsr) \
); \
\ \
asm volatile( "movw %%sr,%0" : "=d" (_tmpsr)); \
_tmpsr = (_tmpsr & 0xf8ff) | ((_newlevel) << 8); \ _tmpsr = (_tmpsr & 0xf8ff) | ((_newlevel) << 8); \
\ asm volatile( "movw %0,%%sr" : : "d" (_tmpsr)); \
asm volatile( "movw %0,%%sr" \ } while (0)
: "=d" (_tmpsr) : "0" (_tmpsr) \
); \
}
#if ( M68K_HAS_VBR == 1 ) #if ( M68K_HAS_VBR == 1 )
#define m68k_get_vbr( vbr ) \ #define m68k_get_vbr( vbr ) \
{ (vbr) = 0; \ asm volatile ( "movec %%vbr,%0 " : "=r" (vbr))
asm volatile ( "movec %%vbr,%0 " \
: "=r" (vbr) : "0" (vbr) ); \
}
#define m68k_set_vbr( vbr ) \ #define m68k_set_vbr( vbr ) \
{ register m68k_isr *_vbr= (m68k_isr *)(vbr); \ asm volatile ( "movec %0,%%vbr " : : "r" (vbr))
asm volatile ( "movec %0,%%vbr " \
: "=a" (_vbr) : "0" (_vbr) ); \
}
#else #else
#define m68k_get_vbr( _vbr ) _vbr = (void *)_VBR #define m68k_get_vbr( _vbr ) _vbr = (void *)_VBR
#define m68k_set_vbr( _vbr ) #define m68k_set_vbr( _vbr )