Ignore:
Timestamp:
May 31, 2020, 2:22:55 PM (11 months ago)
Author:
Jan Sommer <jan.sommer@…>
Branches:
5, master
Children:
c954003
Parents:
8937f12
git-author:
Jan Sommer <jan.sommer@…> (05/31/20 14:22:55)
git-committer:
Chris Johns <chrisj@…> (06/11/20 03:29:11)
Message:

bsp/pc386: Define interrupt stack frame for smp

  • Defines CPU_Interrupt_frame in cpu_impl.h
  • Updates isq_asm.S to save/restore registers in matching order to

interrupt frame

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpukit/score/cpu/i386/include/rtems/score/cpu.h

    r8937f12 r5d4a1edc  
    265265extern void rtems_exception_init_mngt(void);
    266266
    267 #ifdef RTEMS_SMP
    268   /* Throw compile-time error to indicate incomplete support */
    269   #error "i386 targets do not support SMP.\
    270  See: https://devel.rtems.org/ticket/3335"
    271 
    272   /*
    273    * This size must match the size of the CPU_Interrupt_frame, which must be
    274    * used in the SMP context switch code, which is incomplete at the moment.
    275    */
    276   #define CPU_INTERRUPT_FRAME_SIZE 4
    277 #endif
    278 
    279267/*
    280268 * This port does not pass any frame info to the
     
    283271
    284272typedef struct {
    285   uint32_t todo_replace_with_apt_registers;
     273/* allow for 16B alignment (worst case 12 Bytes more) and isr right after pushfl */
     274  uint32_t reserved[3];
     275/* registers saved by _ISR_Handler */
     276  uint32_t isr_vector;
     277  uint32_t ebx;
     278  uint32_t ebp;
     279  uint32_t esp;
     280/* registers saved by rtems_irq_prologue_##_vector */
     281  uint32_t edx;
     282  uint32_t ecx;
     283  uint32_t eax;
     284/* registers saved by CPU */
     285  uint32_t eip;
     286  uint32_t cs;
     287  uint32_t eflags;
    286288} CPU_Interrupt_frame;
    287289
Note: See TracChangeset for help on using the changeset viewer.