Changeset c556d0ba in rtems


Ignore:
Timestamp:
May 7, 2001, 1:06:56 PM (19 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, master
Children:
a9d8649
Parents:
65e6b542
Message:

2001-05-07 Joel Sherrill <joel@…>

  • cpu_asm.S: Merged patches from Gregory Menke <Gregory.D.Menke.1@…> that clean up stack usage and include nops in the delay slots.
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • c/src/exec/score/cpu/mips/ChangeLog

    r65e6b542 rc556d0ba  
     12001-05-07      Joel Sherrill <joel@OARcorp.com>
     2
     3        * cpu_asm.S: Merged patches from Gregory Menke
     4        <Gregory.D.Menke.1@gsfc.nasa.gov> that clean up
     5        stack usage and include nops in the delay slots.
     6
    172001-04-20      Joel Sherrill <joel@OARcorp.com>
    28
  • c/src/exec/score/cpu/mips/cpu_asm.S

    r65e6b542 rc556d0ba  
    3939#include "idtcpu.h"
    4040
    41 #define EXCP_STACK_SIZE (NREGS*R_SZ)
    42 #define ISR_VEC_SIZE 4
    43 
    4441/*  Ifdefs prevent the duplication of code for MIPS ISA Level 3 ( R4xxx )
    4542 *  and MIPS ISA Level 1 (R3xxx).
     
    4845#if __mips == 3
    4946/* 64 bit register operations */
    50 #define ADD   dadd
    51 #define STREG sd
    52 #define LDREG ld
    53 #define MFCO  dmfc0
    54 #define MTCO  dmtc0
    55 #define ADDU   addu
    56 #define ADDIU  addiu
    57 #define R_SZ  8
    58 #define F_SZ  8
    59 #define SZ_INT 8
     47#define NOP     
     48#define ADD     dadd
     49#define STREG   sd
     50#define LDREG   ld
     51#define MFCO    dmfc0
     52#define MTCO    dmtc0
     53#define ADDU    addu
     54#define ADDIU   addiu
     55#define R_SZ    8
     56#define F_SZ    8
     57#define SZ_INT  8
    6058#define SZ_INT_POW2 3
    6159
     
    6462#elif __mips == 1
    6563/* 32 bit register operations*/
    66 #define ADD   add
    67 #define STREG sw
    68 #define LDREG lw
    69 #define MFCO  mfc0
    70 #define MTCO  mtc0
    71 #define ADDU  add
    72 #define ADDIU addi
    73 #define R_SZ  4
    74 #define F_SZ  4
    75 #define SZ_INT 4
     64#define NOP     nop
     65#define ADD     add
     66#define STREG   sw
     67#define LDREG   lw
     68#define MFCO    mfc0
     69#define MTCO    mtc0
     70#define ADDU    add
     71#define ADDIU   addi
     72#define R_SZ    4
     73#define F_SZ    4
     74#define SZ_INT  4
    7675#define SZ_INT_POW2 2
    77 
    7876#else
    7977#error "mips assembly: what size registers do I deal with?"
     
    8179
    8280
     81#define ISR_VEC_SIZE    4
     82#define EXCP_STACK_SIZE (NREGS*R_SZ)
     83
     84       
    8385#ifdef __GNUC__
    8486#define ASM_EXTERN(x,size) .extern x,size
     
    159161        .set noat
    160162        ld a1,(a0)
     163        NOP
    161164        swc1 $f0,FP0_OFFSET*F_SZ(a1)
    162165        swc1 $f1,FP1_OFFSET*F_SZ(a1)
     
    219222        .set noat
    220223        ld a1,(a0)
     224        NOP
    221225        lwc1 $f0,FP0_OFFSET*4(a1)
    222226        lwc1 $f1,FP1_OFFSET*4(a1)
     
    270274FRAME(_CPU_Context_switch,sp,0,ra)
    271275
    272         mfc0  t0,C0_SR
     276        MFC0  t0,C0_SR
    273277        li    t1,~(SR_INTERRUPT_ENABLE_BITS)
    274278        STREG t0,C0_SR_OFFSET*4(a0)   /* save status register */
    275279        and   t0,t1
    276         mtc0  t0,C0_SR                /* first disable ie bit (recommended) */
     280        MTC0  t0,C0_SR                /* first disable ie bit (recommended) */
    277281#if __mips == 3
    278         ori t0,SR_EXL|SR_IE   /* enable exception level to disable interrupts */
    279         mtc0  t0,C0_SR
     282        ori   t0,SR_EXL|SR_IE   /* enable exception level to disable interrupts */
     283        MTC0  t0,C0_SR
    280284#endif
    281285
     
    293297
    294298        MFC0  t0,C0_EPC
     299        NOP
    295300        STREG t0,C0_EPC_OFFSET*R_SZ(a0)
    296301
    297302_CPU_Context_switch_restore:
     303        LDREG ra,RA_OFFSET*R_SZ(a1)
     304        LDREG sp,SP_OFFSET*R_SZ(a1)
     305        LDREG fp,FP_OFFSET*R_SZ(a1)
    298306        LDREG s0,S0_OFFSET*R_SZ(a1)           /* restore context */
    299307        LDREG s1,S1_OFFSET*R_SZ(a1)
     
    304312        LDREG s6,S6_OFFSET*R_SZ(a1)
    305313        LDREG s7,S7_OFFSET*R_SZ(a1)
    306         LDREG fp,FP_OFFSET*R_SZ(a1)
    307         LDREG sp,SP_OFFSET*R_SZ(a1)
    308         LDREG ra,RA_OFFSET*R_SZ(a1)
     314
    309315        LDREG t0,C0_EPC_OFFSET*R_SZ(a1)
     316        NOP
    310317        MTC0  t0,C0_EPC
    311318        LDREG t0, C0_SR_OFFSET*R_SZ(a1)
    312 
     319        NOP
     320       
    313321#if __mips == 3
    314322        andi  t0,SR_EXL
    315323        bnez  t0,_CPU_Context_1   /* set exception level from restore context */
    316324        li    t0,~SR_EXL
    317         mfc0  t1,C0_SR
    318         nop
     325        MFC0  t1,C0_SR
     326        NOP
    319327        and   t1,t0
    320         mtc0  t1,C0_SR
     328        MTC0  t1,C0_SR
    321329
    322330#elif __mips == 1
    323331        andi  t0,(SR_INTERRUPT_ENABLE_BITS) /* we know 0 disabled */
    324332        beq   t0,$0,_CPU_Context_1          /* set level from restore context */
    325         mfc0  t0,C0_SR
    326         nop
     333        MFC0  t0,C0_SR
     334        NOP
    327335        or    t0,(SR_INTERRUPT_ENABLE_BITS) /* new_sr = old sr with enabled  */
    328         mtc0  t0,C0_SR                      /* set with enabled */
     336        MTC0  t0,C0_SR                      /* set with enabled */
    329337#endif
    330338
    331339_CPU_Context_1:
    332340        j ra
    333         nop
     341        NOP
    334342ENDFRAME(_CPU_Context_switch)
    335343
     
    350358        ADD a1,a0,zero
    351359        j   _CPU_Context_switch_restore
    352         nop
     360        NOP
    353361ENDFRAME(_CPU_Context_restore)
    354362
     
    417425        mfhi  k0
    418426        STREG gp, R_GP*R_SZ(sp)
     427        STREG k0, R_MDHI*R_SZ(sp)
    419428        STREG fp, R_FP*R_SZ(sp)
    420         STREG k0, R_MDHI*R_SZ(sp)
    421429        .set noat
    422430        STREG AT, R_AT*R_SZ(sp)
    423431        .set at
    424432
    425         /* Q: Why hardcode -40 for stack add??? */
    426         /* This needs to be figured out.........*/
    427         ADDIU    sp,sp,-40
    428         STREG    ra,32(sp)                /* store ra on the stack */
    429         MFC0     t0, C0_EPC               /* XXX */
    430         STREG    t0,16(sp)                /* XXX store EPC on the stack */
    431         mfc0     t0,C0_SR
    432         STREG    t0,24(sp)                /* XXX store SR on the stack */
     433        MFC0     t0,C0_EPC                /* XXX */
     434        MFC0     t1,C0_SR
     435        STREG    t0,R_EPC*R_SZ(sp)        /* XXX store EPC on the stack */
     436        STREG    t1,R_SR*R_SZ(sp)         /* XXX store SR on the stack */
    433437
    434438/* determine if an interrupt generated this exception */
    435439
    436         mfc0     k0,C0_CAUSE
     440        MFC0     k0,C0_CAUSE
     441        NOP
    437442        and      k1,k0,CAUSE_EXCMASK
    438443        beq      k1, 0, _ISR_Handler_1
    439         nop
    440444
    441445_ISR_Handler_Exception:
    442446        nop
    443         b        _ISR_Handler_Exception       /* Jump to the exception code */
     447        jal    mips_vector_exceptions
    444448        nop
    445449
    446450_ISR_Handler_1:
    447451
    448         mfc0     k1,C0_SR
     452        MFC0     k1,C0_SR
     453        and      k0,CAUSE_IPMASK
    449454        and      k0,k1
    450         and      k0,CAUSE_IPMASK
    451455        beq      k0,zero,_ISR_Handler_exit
    452456                /* external interrupt not enabled, ignore */
     
    469473   */
    470474        LDREG  t0,_ISR_Nest_level
     475        NOP
    471476        ADD    t0,t0,1
    472477        STREG  t0,_ISR_Nest_level
     
    475480   */
    476481        LDREG  t1,_Thread_Dispatch_disable_level
     482        NOP
    477483        ADD    t1,t1,1
    478484        STREG  t1,_Thread_Dispatch_disable_level
     
    490496   */
    491497        LDREG  t2,_ISR_Nest_level
     498        NOP
    492499        ADD    t2,t2,-1
    493500        STREG  t2,_ISR_Nest_level
     
    496503   */
    497504        LDREG  t1,_Thread_Dispatch_disable_level
     505        NOP
    498506        ADD    t1,t1,-1
    499507        STREG  t1,_Thread_Dispatch_disable_level
     
    515523        LDREG t0,_Context_Switch_necessary
    516524        LDREG t1,_ISR_Signals_to_thread_executing
     525        NOP
    517526        or    t0,t0,t1
    518527        beq   t0,zero,_ISR_Handler_exit
    519528        nop
     529
    520530  /*
    521531   *  call _Thread_Dispatch() or prepare to return to _ISR_Dispatch
    522532   */
     533        LDREG    t0,R_SR*R_SZ(sp)         /* XXX restore SR on the stack */
     534        NOP
     535        MTC0     t0,C0_SR
     536        la       t0,_ISR_Dispatch
     537        MTC0     t0, C0_EPC               /* XXX */
     538        NOP
     539        j        t0
     540        rfe                               /* go to _ISR_Dispatch in task mode */
     541
     542_ISR_Dispatch:
    523543        jal _Thread_Dispatch
    524544        nop
     545       
     546        li      t0,0x10011001
     547        sw      t0,0x8001ff00
     548        nop
    525549  /*
    526550   *  prepare to get out of interrupt
    527551   *  return from interrupt  (maybe to _ISR_Dispatch)
    528552   *
    529    *  LABEL "exit interrupt (simple case):
     553   *  LABEL "exit interrupt (simple case):"
    530554   *  prepare to get out of interrupt
    531555   *  return from interrupt
     
    533557
    534558_ISR_Handler_exit:
    535         LDREG    ra,32(sp)
    536         LDREG    t0,16(sp)                /* XXX restore EPC on the stack */
     559        LDREG    t0, R_EPC*R_SZ(sp)        /* XXX restore EPC on the stack */
     560        LDREG    t1, R_SR*R_SZ(sp)         /* XXX restore SR on the stack */
    537561        MTC0     t0, C0_EPC               /* XXX */
    538         LDREG    t0,24(sp)                /* XXX restore SR on the stack */
    539         mtc0     t0,C0_SR
    540         ADDIU    sp,sp,40    /* Q: Again with the 40...Is this needed? */
     562        MTC0     t1, C0_SR
    541563
    542564/* restore interrupt context from stack */
    543565     
    544         LDREG k0, R_MDLO*R_SZ(sp)           
     566        LDREG k0, R_MDLO*R_SZ(sp)
     567        LDREG a2, R_A2*R_SZ(sp)
    545568        mtlo  k0
    546569        LDREG k0, R_MDHI*R_SZ(sp)           
    547         LDREG a2, R_A2*R_SZ(sp)
     570        LDREG a3, R_A3*R_SZ(sp)
    548571        mthi  k0
    549         LDREG a3, R_A3*R_SZ(sp)
    550572        LDREG t0, R_T0*R_SZ(sp)
    551573        LDREG t1, R_T1*R_SZ(sp)
     
    569591        .set at
    570592
    571         ADDIU     sp,sp,EXCP_STACK_SIZE 
     593        ADDIU     sp,sp,EXCP_STACK_SIZE
    572594
    573595        MFC0      k0, C0_EPC
    574         nop
    575        
    576         rfe  /* Might not need to do RFE here... */
     596        NOP
    577597        j         k0
     598        rfe                     /* Might not need to do RFE here... */
    578599        nop
    579600
     
    591612ENDFRAME(mips_break)
    592613
     614
  • cpukit/score/cpu/mips/ChangeLog

    r65e6b542 rc556d0ba  
     12001-05-07      Joel Sherrill <joel@OARcorp.com>
     2
     3        * cpu_asm.S: Merged patches from Gregory Menke
     4        <Gregory.D.Menke.1@gsfc.nasa.gov> that clean up
     5        stack usage and include nops in the delay slots.
     6
    172001-04-20      Joel Sherrill <joel@OARcorp.com>
    28
  • cpukit/score/cpu/mips/cpu_asm.S

    r65e6b542 rc556d0ba  
    3939#include "idtcpu.h"
    4040
    41 #define EXCP_STACK_SIZE (NREGS*R_SZ)
    42 #define ISR_VEC_SIZE 4
    43 
    4441/*  Ifdefs prevent the duplication of code for MIPS ISA Level 3 ( R4xxx )
    4542 *  and MIPS ISA Level 1 (R3xxx).
     
    4845#if __mips == 3
    4946/* 64 bit register operations */
    50 #define ADD   dadd
    51 #define STREG sd
    52 #define LDREG ld
    53 #define MFCO  dmfc0
    54 #define MTCO  dmtc0
    55 #define ADDU   addu
    56 #define ADDIU  addiu
    57 #define R_SZ  8
    58 #define F_SZ  8
    59 #define SZ_INT 8
     47#define NOP     
     48#define ADD     dadd
     49#define STREG   sd
     50#define LDREG   ld
     51#define MFCO    dmfc0
     52#define MTCO    dmtc0
     53#define ADDU    addu
     54#define ADDIU   addiu
     55#define R_SZ    8
     56#define F_SZ    8
     57#define SZ_INT  8
    6058#define SZ_INT_POW2 3
    6159
     
    6462#elif __mips == 1
    6563/* 32 bit register operations*/
    66 #define ADD   add
    67 #define STREG sw
    68 #define LDREG lw
    69 #define MFCO  mfc0
    70 #define MTCO  mtc0
    71 #define ADDU  add
    72 #define ADDIU addi
    73 #define R_SZ  4
    74 #define F_SZ  4
    75 #define SZ_INT 4
     64#define NOP     nop
     65#define ADD     add
     66#define STREG   sw
     67#define LDREG   lw
     68#define MFCO    mfc0
     69#define MTCO    mtc0
     70#define ADDU    add
     71#define ADDIU   addi
     72#define R_SZ    4
     73#define F_SZ    4
     74#define SZ_INT  4
    7675#define SZ_INT_POW2 2
    77 
    7876#else
    7977#error "mips assembly: what size registers do I deal with?"
     
    8179
    8280
     81#define ISR_VEC_SIZE    4
     82#define EXCP_STACK_SIZE (NREGS*R_SZ)
     83
     84       
    8385#ifdef __GNUC__
    8486#define ASM_EXTERN(x,size) .extern x,size
     
    159161        .set noat
    160162        ld a1,(a0)
     163        NOP
    161164        swc1 $f0,FP0_OFFSET*F_SZ(a1)
    162165        swc1 $f1,FP1_OFFSET*F_SZ(a1)
     
    219222        .set noat
    220223        ld a1,(a0)
     224        NOP
    221225        lwc1 $f0,FP0_OFFSET*4(a1)
    222226        lwc1 $f1,FP1_OFFSET*4(a1)
     
    270274FRAME(_CPU_Context_switch,sp,0,ra)
    271275
    272         mfc0  t0,C0_SR
     276        MFC0  t0,C0_SR
    273277        li    t1,~(SR_INTERRUPT_ENABLE_BITS)
    274278        STREG t0,C0_SR_OFFSET*4(a0)   /* save status register */
    275279        and   t0,t1
    276         mtc0  t0,C0_SR                /* first disable ie bit (recommended) */
     280        MTC0  t0,C0_SR                /* first disable ie bit (recommended) */
    277281#if __mips == 3
    278         ori t0,SR_EXL|SR_IE   /* enable exception level to disable interrupts */
    279         mtc0  t0,C0_SR
     282        ori   t0,SR_EXL|SR_IE   /* enable exception level to disable interrupts */
     283        MTC0  t0,C0_SR
    280284#endif
    281285
     
    293297
    294298        MFC0  t0,C0_EPC
     299        NOP
    295300        STREG t0,C0_EPC_OFFSET*R_SZ(a0)
    296301
    297302_CPU_Context_switch_restore:
     303        LDREG ra,RA_OFFSET*R_SZ(a1)
     304        LDREG sp,SP_OFFSET*R_SZ(a1)
     305        LDREG fp,FP_OFFSET*R_SZ(a1)
    298306        LDREG s0,S0_OFFSET*R_SZ(a1)           /* restore context */
    299307        LDREG s1,S1_OFFSET*R_SZ(a1)
     
    304312        LDREG s6,S6_OFFSET*R_SZ(a1)
    305313        LDREG s7,S7_OFFSET*R_SZ(a1)
    306         LDREG fp,FP_OFFSET*R_SZ(a1)
    307         LDREG sp,SP_OFFSET*R_SZ(a1)
    308         LDREG ra,RA_OFFSET*R_SZ(a1)
     314
    309315        LDREG t0,C0_EPC_OFFSET*R_SZ(a1)
     316        NOP
    310317        MTC0  t0,C0_EPC
    311318        LDREG t0, C0_SR_OFFSET*R_SZ(a1)
    312 
     319        NOP
     320       
    313321#if __mips == 3
    314322        andi  t0,SR_EXL
    315323        bnez  t0,_CPU_Context_1   /* set exception level from restore context */
    316324        li    t0,~SR_EXL
    317         mfc0  t1,C0_SR
    318         nop
     325        MFC0  t1,C0_SR
     326        NOP
    319327        and   t1,t0
    320         mtc0  t1,C0_SR
     328        MTC0  t1,C0_SR
    321329
    322330#elif __mips == 1
    323331        andi  t0,(SR_INTERRUPT_ENABLE_BITS) /* we know 0 disabled */
    324332        beq   t0,$0,_CPU_Context_1          /* set level from restore context */
    325         mfc0  t0,C0_SR
    326         nop
     333        MFC0  t0,C0_SR
     334        NOP
    327335        or    t0,(SR_INTERRUPT_ENABLE_BITS) /* new_sr = old sr with enabled  */
    328         mtc0  t0,C0_SR                      /* set with enabled */
     336        MTC0  t0,C0_SR                      /* set with enabled */
    329337#endif
    330338
    331339_CPU_Context_1:
    332340        j ra
    333         nop
     341        NOP
    334342ENDFRAME(_CPU_Context_switch)
    335343
     
    350358        ADD a1,a0,zero
    351359        j   _CPU_Context_switch_restore
    352         nop
     360        NOP
    353361ENDFRAME(_CPU_Context_restore)
    354362
     
    417425        mfhi  k0
    418426        STREG gp, R_GP*R_SZ(sp)
     427        STREG k0, R_MDHI*R_SZ(sp)
    419428        STREG fp, R_FP*R_SZ(sp)
    420         STREG k0, R_MDHI*R_SZ(sp)
    421429        .set noat
    422430        STREG AT, R_AT*R_SZ(sp)
    423431        .set at
    424432
    425         /* Q: Why hardcode -40 for stack add??? */
    426         /* This needs to be figured out.........*/
    427         ADDIU    sp,sp,-40
    428         STREG    ra,32(sp)                /* store ra on the stack */
    429         MFC0     t0, C0_EPC               /* XXX */
    430         STREG    t0,16(sp)                /* XXX store EPC on the stack */
    431         mfc0     t0,C0_SR
    432         STREG    t0,24(sp)                /* XXX store SR on the stack */
     433        MFC0     t0,C0_EPC                /* XXX */
     434        MFC0     t1,C0_SR
     435        STREG    t0,R_EPC*R_SZ(sp)        /* XXX store EPC on the stack */
     436        STREG    t1,R_SR*R_SZ(sp)         /* XXX store SR on the stack */
    433437
    434438/* determine if an interrupt generated this exception */
    435439
    436         mfc0     k0,C0_CAUSE
     440        MFC0     k0,C0_CAUSE
     441        NOP
    437442        and      k1,k0,CAUSE_EXCMASK
    438443        beq      k1, 0, _ISR_Handler_1
    439         nop
    440444
    441445_ISR_Handler_Exception:
    442446        nop
    443         b        _ISR_Handler_Exception       /* Jump to the exception code */
     447        jal    mips_vector_exceptions
    444448        nop
    445449
    446450_ISR_Handler_1:
    447451
    448         mfc0     k1,C0_SR
     452        MFC0     k1,C0_SR
     453        and      k0,CAUSE_IPMASK
    449454        and      k0,k1
    450         and      k0,CAUSE_IPMASK
    451455        beq      k0,zero,_ISR_Handler_exit
    452456                /* external interrupt not enabled, ignore */
     
    469473   */
    470474        LDREG  t0,_ISR_Nest_level
     475        NOP
    471476        ADD    t0,t0,1
    472477        STREG  t0,_ISR_Nest_level
     
    475480   */
    476481        LDREG  t1,_Thread_Dispatch_disable_level
     482        NOP
    477483        ADD    t1,t1,1
    478484        STREG  t1,_Thread_Dispatch_disable_level
     
    490496   */
    491497        LDREG  t2,_ISR_Nest_level
     498        NOP
    492499        ADD    t2,t2,-1
    493500        STREG  t2,_ISR_Nest_level
     
    496503   */
    497504        LDREG  t1,_Thread_Dispatch_disable_level
     505        NOP
    498506        ADD    t1,t1,-1
    499507        STREG  t1,_Thread_Dispatch_disable_level
     
    515523        LDREG t0,_Context_Switch_necessary
    516524        LDREG t1,_ISR_Signals_to_thread_executing
     525        NOP
    517526        or    t0,t0,t1
    518527        beq   t0,zero,_ISR_Handler_exit
    519528        nop
     529
    520530  /*
    521531   *  call _Thread_Dispatch() or prepare to return to _ISR_Dispatch
    522532   */
     533        LDREG    t0,R_SR*R_SZ(sp)         /* XXX restore SR on the stack */
     534        NOP
     535        MTC0     t0,C0_SR
     536        la       t0,_ISR_Dispatch
     537        MTC0     t0, C0_EPC               /* XXX */
     538        NOP
     539        j        t0
     540        rfe                               /* go to _ISR_Dispatch in task mode */
     541
     542_ISR_Dispatch:
    523543        jal _Thread_Dispatch
    524544        nop
     545       
     546        li      t0,0x10011001
     547        sw      t0,0x8001ff00
     548        nop
    525549  /*
    526550   *  prepare to get out of interrupt
    527551   *  return from interrupt  (maybe to _ISR_Dispatch)
    528552   *
    529    *  LABEL "exit interrupt (simple case):
     553   *  LABEL "exit interrupt (simple case):"
    530554   *  prepare to get out of interrupt
    531555   *  return from interrupt
     
    533557
    534558_ISR_Handler_exit:
    535         LDREG    ra,32(sp)
    536         LDREG    t0,16(sp)                /* XXX restore EPC on the stack */
     559        LDREG    t0, R_EPC*R_SZ(sp)        /* XXX restore EPC on the stack */
     560        LDREG    t1, R_SR*R_SZ(sp)         /* XXX restore SR on the stack */
    537561        MTC0     t0, C0_EPC               /* XXX */
    538         LDREG    t0,24(sp)                /* XXX restore SR on the stack */
    539         mtc0     t0,C0_SR
    540         ADDIU    sp,sp,40    /* Q: Again with the 40...Is this needed? */
     562        MTC0     t1, C0_SR
    541563
    542564/* restore interrupt context from stack */
    543565     
    544         LDREG k0, R_MDLO*R_SZ(sp)           
     566        LDREG k0, R_MDLO*R_SZ(sp)
     567        LDREG a2, R_A2*R_SZ(sp)
    545568        mtlo  k0
    546569        LDREG k0, R_MDHI*R_SZ(sp)           
    547         LDREG a2, R_A2*R_SZ(sp)
     570        LDREG a3, R_A3*R_SZ(sp)
    548571        mthi  k0
    549         LDREG a3, R_A3*R_SZ(sp)
    550572        LDREG t0, R_T0*R_SZ(sp)
    551573        LDREG t1, R_T1*R_SZ(sp)
     
    569591        .set at
    570592
    571         ADDIU     sp,sp,EXCP_STACK_SIZE 
     593        ADDIU     sp,sp,EXCP_STACK_SIZE
    572594
    573595        MFC0      k0, C0_EPC
    574         nop
    575        
    576         rfe  /* Might not need to do RFE here... */
     596        NOP
    577597        j         k0
     598        rfe                     /* Might not need to do RFE here... */
    578599        nop
    579600
     
    591612ENDFRAME(mips_break)
    592613
     614
Note: See TracChangeset for help on using the changeset viewer.