diff options
Diffstat (limited to 'c/src/exec/score/cpu/m68k')
-rw-r--r-- | c/src/exec/score/cpu/m68k/asm.h | 2 | ||||
-rw-r--r-- | c/src/exec/score/cpu/m68k/cpu.c | 19 | ||||
-rw-r--r-- | c/src/exec/score/cpu/m68k/cpu.h | 6 | ||||
-rw-r--r-- | c/src/exec/score/cpu/m68k/m68k.h | 11 |
4 files changed, 31 insertions, 7 deletions
diff --git a/c/src/exec/score/cpu/m68k/asm.h b/c/src/exec/score/cpu/m68k/asm.h index 58bb04bdf9..7a25b6c298 100644 --- a/c/src/exec/score/cpu/m68k/asm.h +++ b/c/src/exec/score/cpu/m68k/asm.h @@ -31,7 +31,7 @@ */ #define ASM -#include <rtems/m68k.h> +#include <rtems/core/m68k.h> /* * Recent versions of GNU cpp define variables which indicate the diff --git a/c/src/exec/score/cpu/m68k/cpu.c b/c/src/exec/score/cpu/m68k/cpu.c index a97698372a..fdba64bffe 100644 --- a/c/src/exec/score/cpu/m68k/cpu.c +++ b/c/src/exec/score/cpu/m68k/cpu.c @@ -14,7 +14,7 @@ #include <rtems/system.h> #include <rtems/fatal.h> -#include <rtems/isr.h> +#include <rtems/core/isr.h> /* _CPU_Initialize * @@ -33,15 +33,26 @@ void _CPU_Initialize( ) { - if ( cpu_table == NULL ) - rtems_fatal_error_occurred( RTEMS_NOT_CONFIGURED ); - _CPU_Table = *cpu_table; } /*PAGE * + * _CPU_ISR_Get_level + */ + +unsigned32 _CPU_ISR_Get_level( void ) +{ + unsigned32 level; + + m68k_get_interrupt_level( level ); + + return level; +} + +/*PAGE + * * _CPU_ISR_install_raw_handler */ diff --git a/c/src/exec/score/cpu/m68k/cpu.h b/c/src/exec/score/cpu/m68k/cpu.h index 566e479f3a..8379d47a00 100644 --- a/c/src/exec/score/cpu/m68k/cpu.h +++ b/c/src/exec/score/cpu/m68k/cpu.h @@ -30,9 +30,9 @@ extern "C" { #define NO_UNINITIALIZED_WARNINGS -#include <rtems/m68k.h> +#include <rtems/core/m68k.h> #ifndef ASM -#include <rtems/m68ktypes.h> +#include <rtems/core/m68ktypes.h> #endif /* conditional compilation parameters */ @@ -222,6 +222,8 @@ EXTERN void *_CPU_Interrupt_stack_high; #define _CPU_ISR_Set_level( _newlevel ) \ m68k_set_interrupt_level( _newlevel ) +unsigned32 _CPU_ISR_Get_level( void ); + /* end of ISR handler macros */ /* diff --git a/c/src/exec/score/cpu/m68k/m68k.h b/c/src/exec/score/cpu/m68k/m68k.h index b86db286cb..a2e0df6a25 100644 --- a/c/src/exec/score/cpu/m68k/m68k.h +++ b/c/src/exec/score/cpu/m68k/m68k.h @@ -196,6 +196,17 @@ extern "C" { ); \ } +#define m68k_get_interrupt_level( _level ) \ + do { \ + register unsigned32 _tmpsr = 0; \ + \ + asm volatile( "movw %%sr,%0" \ + : "=d" (_tmpsr) : "0" (_tmpsr) \ + ); \ + \ + _level = (_tmpsr & 0x0700) >> 8; \ + } while (0) + #define m68k_set_interrupt_level( _newlevel ) \ { \ register unsigned32 _tmpsr = 0; \ |