mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-21 06:24:07 +08:00
Patch from Eric Norum <eric@skatter.USask.Ca>:
I found that my 68040/68360 test programs would not run even after
I fixed the `wrong BSP' problem.
It seems that there's a bug in the interrupt handling code for
processors with hardware interrupt stacks (e.g. 68040). The wrong
status register was getting pushed on the stack for the `return
from exception' to call _ISR__Dispatch. This ended up making
the context switch code run on the interrupt stack, so interrupt-driven
context switches would always fail.
I guess that no one has tried running any of the RTEMS-4.0 snapshots
on a 68040 machine!
Anyhow, here are the patches for
1) gen68360.cfg --- to fix the `wrong-BSP' problem.
2) m68k/cpu_asm.s --- to fix the hardware interrupt stack problem.
With these patches in place, the network demo programs run on my
68040/68360 system. The paranoia program runs with no failures,
defects nor flaws.
This commit is contained in:
@@ -238,7 +238,7 @@ bframe: clrl SYM (_ISR_Signals_to_thread_executing)
|
||||
movec msp,a0 | a0 = master stack pointer
|
||||
movew #0,a0@- | push format word
|
||||
movel #SYM(_ISR_Dispatch),a0@- | push return addr
|
||||
movew sr,a0@- | push existing sr
|
||||
movew a0@(6),a0@- | push saved sr
|
||||
movec a0,msp | set master stack pointer
|
||||
#else
|
||||
jsr SYM (_Thread_Dispatch) | Perform context switch
|
||||
|
||||
@@ -148,23 +148,6 @@ extern "C" {
|
||||
# define M68K_HAS_FPSP_PACKAGE 0
|
||||
# endif
|
||||
|
||||
#elif defined(__mc68060__)
|
||||
|
||||
#define CPU_MODEL_NAME "m68060"
|
||||
#define M68K_HAS_VBR 1
|
||||
#define M68K_HAS_SEPARATE_STACKS 0
|
||||
#define M68K_HAS_BFFFO 1
|
||||
#define M68K_HAS_PREINDEXING 1
|
||||
#define M68K_HAS_EXTB_L 1
|
||||
#define M68K_HAS_MISALIGNED 1
|
||||
# if defined (__HAVE_68881__)
|
||||
# define M68K_HAS_FPU 1
|
||||
# define M68K_HAS_FPSP_PACKAGE 1
|
||||
# else
|
||||
# define M68K_HAS_FPU 0
|
||||
# define M68K_HAS_FPSP_PACKAGE 0
|
||||
# endif
|
||||
|
||||
#elif defined(__mc68302__)
|
||||
#define CPU_MODEL_NAME "m68302"
|
||||
#define M68K_HAS_VBR 0
|
||||
|
||||
@@ -19,13 +19,6 @@ include $(RTEMS_ROOT)/make/custom/default.cfg
|
||||
# This is the actual bsp directory used during the build process.
|
||||
RTEMS_BSP_FAMILY=gen68360
|
||||
|
||||
## Target compiler config file, if any
|
||||
CONFIG.$(TARGET_ARCH).CC = $(RTEMS_ROOT)/make/compilers/gcc-target-default.cfg
|
||||
|
||||
# We may install in a CPU model based directory but this is still
|
||||
# a gen68360 based bsp.
|
||||
RTEMS_BSP=gen68360
|
||||
|
||||
#
|
||||
# You must use versions of gcc and gas that support the -mcpu32 option.
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user