Changeset d26dce2 in rtems


Ignore:
Timestamp:
May 24, 2001, 1:19:51 PM (20 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
bb3efe9
Parents:
2e7ed911
Message:

2001-05-24 Greg Menke <gregory.menke@…>

  • Assisted in design and debug by Joel Sherrill <joel@…>.
  • cpu_asm.S: Now works on Mongoose-V. Missed in previous patch.
Files:
4 edited

Legend:

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

    r2e7ed911 rd26dce2  
     12001-05-24      Greg Menke <gregory.menke@gsfc.nasa.gov>
     2
     3        * Assisted in design and debug by Joel Sherrill <joel@OARcorp.com>.
     4        * cpu_asm.S: Now works on Mongoose-V.  Missed in previous patch.
     5
    162001-05-22      Greg Menke <gregory.menke@gsfc.nasa.gov>
    27
  • c/src/exec/score/cpu/mips/cpu_asm.S

    r2e7ed911 rd26dce2  
    3939#include "idtcpu.h"
    4040
     41/* enable debugging shadow writes to misc ram, this is a vestigal
     42* Mongoose-ism debug tool- but may be handy in the future so we
     43* left it in...
     44*/
     45/* #define INSTRUMENT */
     46       
     47
     48
     49       
    4150/*  Ifdefs prevent the duplication of code for MIPS ISA Level 3 ( R4xxx )
    4251 *  and MIPS ISA Level 1 (R3xxx).
     
    102111#define RA_OFFSET 10
    103112#define C0_SR_OFFSET 11
    104 #define C0_EPC_OFFSET 12
     113/* #define C0_EPC_OFFSET 12 */
    105114
    106115/* NOTE: these constants must match the Context_Control_fp structure in cpu.h */
     
    160169FRAME(_CPU_Context_save_fp,sp,0,ra)
    161170        .set noat
    162         ld a1,(a0)
     171        ld   a1,(a0)
    163172        NOP
    164173        swc1 $f0,FP0_OFFSET*F_SZ(a1)
     
    276285        MFC0  t0,C0_SR
    277286        li    t1,~(SR_INTERRUPT_ENABLE_BITS)
    278         STREG t0,C0_SR_OFFSET*4(a0)   /* save status register */
     287        STREG t0,C0_SR_OFFSET*4(a0)     /* save status register */
    279288        and   t0,t1
    280         MTC0  t0,C0_SR                /* first disable ie bit (recommended) */
     289        MTC0  t0,C0_SR                  /* first disable ie bit (recommended) */
    281290#if __mips == 3
    282         ori   t0,SR_EXL|SR_IE   /* enable exception level to disable interrupts */
     291        ori   t0,SR_EXL|SR_IE           /* enable exception level to disable interrupts */
    283292        MTC0  t0,C0_SR
    284293#endif
    285294
    286         STREG ra,RA_OFFSET*R_SZ(a0)         /* save current context */
     295        STREG ra,RA_OFFSET*R_SZ(a0)     /* save current context */
    287296        STREG sp,SP_OFFSET*R_SZ(a0)
    288297        STREG fp,FP_OFFSET*R_SZ(a0)
     
    296305        STREG s7,S7_OFFSET*R_SZ(a0)
    297306
     307        /*
    298308        MFC0  t0,C0_EPC
    299309        NOP
    300310        STREG t0,C0_EPC_OFFSET*R_SZ(a0)
     311        */
    301312
    302313_CPU_Context_switch_restore:
    303         LDREG ra,RA_OFFSET*R_SZ(a1)
     314        LDREG ra,RA_OFFSET*R_SZ(a1)         /* restore context */
    304315        LDREG sp,SP_OFFSET*R_SZ(a1)
    305316        LDREG fp,FP_OFFSET*R_SZ(a1)
    306         LDREG s0,S0_OFFSET*R_SZ(a1)           /* restore context */
     317        LDREG s0,S0_OFFSET*R_SZ(a1)
    307318        LDREG s1,S1_OFFSET*R_SZ(a1)
    308319        LDREG s2,S2_OFFSET*R_SZ(a1)
     
    313324        LDREG s7,S7_OFFSET*R_SZ(a1)
    314325
     326        /*
    315327        LDREG t0,C0_EPC_OFFSET*R_SZ(a1)
    316328        NOP
    317329        MTC0  t0,C0_EPC
     330        */
     331       
    318332        LDREG t0, C0_SR_OFFSET*R_SZ(a1)
    319333        NOP
     
    337351#endif
    338352
     353       
    339354_CPU_Context_1:
    340355        j ra
     
    365380ASM_EXTERN(_Context_Switch_necessary,SZ_INT)
    366381ASM_EXTERN(_ISR_Signals_to_thread_executing,SZ_INT)
     382ASM_EXTERN(_Thread_Executing,SZ_INT)
    367383.extern _Thread_Dispatch
    368384.extern _ISR_Vector_table
     
    419435        STREG t6, R_T6*R_SZ(sp)
    420436        STREG t7, R_T7*R_SZ(sp)
    421         mflo  k0
     437        mflo  t0
    422438        STREG t8, R_T8*R_SZ(sp)
    423         STREG k0, R_MDLO*R_SZ(sp)
     439        STREG t0, R_MDLO*R_SZ(sp)
    424440        STREG t9, R_T9*R_SZ(sp)
    425         mfhi  k0
     441        mfhi  t0
    426442        STREG gp, R_GP*R_SZ(sp)
    427         STREG k0, R_MDHI*R_SZ(sp)
     443        STREG t0, R_MDHI*R_SZ(sp)
    428444        STREG fp, R_FP*R_SZ(sp)
    429445        .set noat
     
    431447        .set at
    432448
    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 */
    437 
     449        MFC0     t0,C0_SR
     450        MFC0     t1,C0_EPC
     451        STREG    t0,R_SR*R_SZ(sp)
     452        STREG    t1,R_EPC*R_SZ(sp)
     453
     454
     455#ifdef INSTRUMENT
     456        lw t2, _Thread_Executing
     457        nop
     458        sw t2, 0x8001FFF0
     459
     460        sw t0, 0x8001F050
     461        sw t1, 0x8001F054
     462
     463        li t0, 0xdeadbeef
     464        li t1, 0xdeadbeef
     465        li t2, 0xdeadbeef
     466                       
     467        sw ra, 0x8001F000
     468        sw v0, 0x8001F004
     469        sw v1, 0x8001F008
     470        sw a0, 0x8001F00c
     471        sw a1, 0x8001F010
     472        sw a2, 0x8001F014
     473        sw a3, 0x8001F018
     474        sw t0, 0x8001F01c
     475        sw t1, 0x8001F020
     476        sw t2, 0x8001F024
     477        sw t3, 0x8001F028
     478        sw t4, 0x8001F02c
     479        sw t5, 0x8001F030
     480        sw t6, 0x8001F034
     481        sw t7, 0x8001F038
     482        sw t8, 0x8001F03c
     483        sw t9, 0x8001F040
     484        sw gp, 0x8001F044
     485        sw fp, 0x8001F048
     486#endif
     487       
    438488/* determine if an interrupt generated this exception */
    439489
    440490        MFC0     k0,C0_CAUSE
    441491        NOP
    442         and      k1,k0,CAUSE_EXCMASK
     492
     493        and      k1,k0,CAUSE_EXCMASK
    443494        beq      k1, 0, _ISR_Handler_1
    444495
    445496_ISR_Handler_Exception:
    446         nop
    447         jal    mips_vector_exceptions
    448         nop
     497
     498        /* if we return from the exception, it is assumed nothing */
     499        /* bad is going on and we can continue to run normally */
     500       
     501        move     a0,sp
     502        jal      mips_vector_exceptions
     503        nop
     504        j        _ISR_Handler_exit
     505        nop
    449506
    450507_ISR_Handler_1:
     
    453510        and      k0,CAUSE_IPMASK
    454511        and      k0,k1
    455         beq      k0,zero,_ISR_Handler_exit
    456                 /* external interrupt not enabled, ignore */
    457                 /* but if it's not an exception or an interrupt, */
    458                 /* Then where did it come from??? */
    459         nop
    460 
     512
     513        /* external interrupt not enabled, ignore */
     514        /* but if it's not an exception or an interrupt, */
     515        /* Then where did it come from??? */
     516       
     517        beq      k0,zero,_ISR_Handler_exit
     518       
     519        li       t2,1           /* set a flag so we process interrupts */
     520       
    461521  /*
    462522   *  save some or all context on stack
     
    488548   *  interrupt source and actually vector to device ISR handlers.
    489549   */
    490 
    491         jal    mips_vector_isr_handlers
     550        move     a0,sp
     551        jal      mips_vector_isr_handlers
    492552        nop
    493553
     
    528588        nop
    529589
    530   /*
    531    *  call _Thread_Dispatch() or prepare to return to _ISR_Dispatch
    532    */
    533         LDREG    t0,R_SR*R_SZ(sp)         /* XXX restore SR on the stack */
     590       
     591       
     592#ifdef INSTRUMENT
     593        li      t0,0x11111111
     594        sw      t0,0x8001F104
     595#endif
     596       
     597  /* restore interrupt state from the saved status register,
     598   * if the isr vectoring didn't so we allow nested interrupts to
     599   * occur */
     600               
     601        LDREG    t0,R_SR*R_SZ(sp)
    534602        NOP
    535603        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:
     604        rfe
     605       
     606
    543607        jal _Thread_Dispatch
    544608        nop
    545        
    546         li      t0,0x10011001
    547         sw      t0,0x8001ff00
    548         nop
     609
     610#ifdef INSTRUMENT
     611        li      t0,0x22222222
     612        sw      t0,0x8001F100
     613#endif
     614
     615       
     616                       
     617
    549618  /*
    550619   *  prepare to get out of interrupt
     
    557626
    558627_ISR_Handler_exit:
    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 */
    561         MTC0     t0, C0_EPC               /* XXX */
    562         MTC0     t1, C0_SR
    563 
    564 /* restore interrupt context from stack */
    565      
     628        LDREG    t0, R_SR*R_SZ(sp)
     629        NOP
     630        MTC0     t0, C0_SR
     631
     632/* restore context from stack */
     633
     634#ifdef INSTRUMENT
     635        lw      t0,_Thread_Executing
     636        nop
     637        sw      t0, 0x8001FFF4
     638#endif
     639
    566640        LDREG k0, R_MDLO*R_SZ(sp)
    567         LDREG a2, R_A2*R_SZ(sp)
     641        LDREG t0, R_T0*R_SZ(sp)
    568642        mtlo  k0
    569643        LDREG k0, R_MDHI*R_SZ(sp)           
    570         LDREG a3, R_A3*R_SZ(sp)
     644        LDREG t1, R_T1*R_SZ(sp)
    571645        mthi  k0
    572         LDREG t0, R_T0*R_SZ(sp)
    573         LDREG t1, R_T1*R_SZ(sp)
    574646        LDREG t2, R_T2*R_SZ(sp)
    575647        LDREG t3, R_T3*R_SZ(sp)
     
    585657        LDREG a0, R_A0*R_SZ(sp)
    586658        LDREG a1, R_A1*R_SZ(sp)
     659        LDREG a2, R_A2*R_SZ(sp)
     660        LDREG a3, R_A3*R_SZ(sp)
    587661        LDREG v1, R_V1*R_SZ(sp)
    588662        LDREG v0, R_V0*R_SZ(sp)
    589         .set noat
     663
     664#ifdef INSTRUMENT
     665        sw ra, 0x8001F000
     666        sw v0, 0x8001F004
     667        sw v1, 0x8001F008
     668        sw a0, 0x8001F00c
     669        sw a1, 0x8001F010
     670        sw a2, 0x8001F014
     671        sw a3, 0x8001F018
     672        sw t0, 0x8001F01c
     673        sw t1, 0x8001F020
     674        sw t2, 0x8001F024
     675        sw t3, 0x8001F028
     676        sw t4, 0x8001F02c
     677        sw t5, 0x8001F030
     678        sw t6, 0x8001F034
     679        sw t7, 0x8001F038
     680        sw t8, 0x8001F03c
     681        sw t9, 0x8001F040
     682        sw gp, 0x8001F044
     683        sw fp, 0x8001F048
     684#endif
     685       
     686        LDREG     k0, R_EPC*R_SZ(sp)
     687       
     688        .set noat
    590689        LDREG AT, R_AT*R_SZ(sp)
    591690        .set at
    592691
    593692        ADDIU     sp,sp,EXCP_STACK_SIZE
    594 
    595         MFC0      k0, C0_EPC
    596         NOP
    597         j         k0
    598         rfe                     /* Might not need to do RFE here... */
     693        j         k0
     694        rfe
    599695        nop
    600696
     
    612708ENDFRAME(mips_break)
    613709
    614 
  • cpukit/score/cpu/mips/ChangeLog

    r2e7ed911 rd26dce2  
     12001-05-24      Greg Menke <gregory.menke@gsfc.nasa.gov>
     2
     3        * Assisted in design and debug by Joel Sherrill <joel@OARcorp.com>.
     4        * cpu_asm.S: Now works on Mongoose-V.  Missed in previous patch.
     5
    162001-05-22      Greg Menke <gregory.menke@gsfc.nasa.gov>
    27
  • cpukit/score/cpu/mips/cpu_asm.S

    r2e7ed911 rd26dce2  
    3939#include "idtcpu.h"
    4040
     41/* enable debugging shadow writes to misc ram, this is a vestigal
     42* Mongoose-ism debug tool- but may be handy in the future so we
     43* left it in...
     44*/
     45/* #define INSTRUMENT */
     46       
     47
     48
     49       
    4150/*  Ifdefs prevent the duplication of code for MIPS ISA Level 3 ( R4xxx )
    4251 *  and MIPS ISA Level 1 (R3xxx).
     
    102111#define RA_OFFSET 10
    103112#define C0_SR_OFFSET 11
    104 #define C0_EPC_OFFSET 12
     113/* #define C0_EPC_OFFSET 12 */
    105114
    106115/* NOTE: these constants must match the Context_Control_fp structure in cpu.h */
     
    160169FRAME(_CPU_Context_save_fp,sp,0,ra)
    161170        .set noat
    162         ld a1,(a0)
     171        ld   a1,(a0)
    163172        NOP
    164173        swc1 $f0,FP0_OFFSET*F_SZ(a1)
     
    276285        MFC0  t0,C0_SR
    277286        li    t1,~(SR_INTERRUPT_ENABLE_BITS)
    278         STREG t0,C0_SR_OFFSET*4(a0)   /* save status register */
     287        STREG t0,C0_SR_OFFSET*4(a0)     /* save status register */
    279288        and   t0,t1
    280         MTC0  t0,C0_SR                /* first disable ie bit (recommended) */
     289        MTC0  t0,C0_SR                  /* first disable ie bit (recommended) */
    281290#if __mips == 3
    282         ori   t0,SR_EXL|SR_IE   /* enable exception level to disable interrupts */
     291        ori   t0,SR_EXL|SR_IE           /* enable exception level to disable interrupts */
    283292        MTC0  t0,C0_SR
    284293#endif
    285294
    286         STREG ra,RA_OFFSET*R_SZ(a0)         /* save current context */
     295        STREG ra,RA_OFFSET*R_SZ(a0)     /* save current context */
    287296        STREG sp,SP_OFFSET*R_SZ(a0)
    288297        STREG fp,FP_OFFSET*R_SZ(a0)
     
    296305        STREG s7,S7_OFFSET*R_SZ(a0)
    297306
     307        /*
    298308        MFC0  t0,C0_EPC
    299309        NOP
    300310        STREG t0,C0_EPC_OFFSET*R_SZ(a0)
     311        */
    301312
    302313_CPU_Context_switch_restore:
    303         LDREG ra,RA_OFFSET*R_SZ(a1)
     314        LDREG ra,RA_OFFSET*R_SZ(a1)         /* restore context */
    304315        LDREG sp,SP_OFFSET*R_SZ(a1)
    305316        LDREG fp,FP_OFFSET*R_SZ(a1)
    306         LDREG s0,S0_OFFSET*R_SZ(a1)           /* restore context */
     317        LDREG s0,S0_OFFSET*R_SZ(a1)
    307318        LDREG s1,S1_OFFSET*R_SZ(a1)
    308319        LDREG s2,S2_OFFSET*R_SZ(a1)
     
    313324        LDREG s7,S7_OFFSET*R_SZ(a1)
    314325
     326        /*
    315327        LDREG t0,C0_EPC_OFFSET*R_SZ(a1)
    316328        NOP
    317329        MTC0  t0,C0_EPC
     330        */
     331       
    318332        LDREG t0, C0_SR_OFFSET*R_SZ(a1)
    319333        NOP
     
    337351#endif
    338352
     353       
    339354_CPU_Context_1:
    340355        j ra
     
    365380ASM_EXTERN(_Context_Switch_necessary,SZ_INT)
    366381ASM_EXTERN(_ISR_Signals_to_thread_executing,SZ_INT)
     382ASM_EXTERN(_Thread_Executing,SZ_INT)
    367383.extern _Thread_Dispatch
    368384.extern _ISR_Vector_table
     
    419435        STREG t6, R_T6*R_SZ(sp)
    420436        STREG t7, R_T7*R_SZ(sp)
    421         mflo  k0
     437        mflo  t0
    422438        STREG t8, R_T8*R_SZ(sp)
    423         STREG k0, R_MDLO*R_SZ(sp)
     439        STREG t0, R_MDLO*R_SZ(sp)
    424440        STREG t9, R_T9*R_SZ(sp)
    425         mfhi  k0
     441        mfhi  t0
    426442        STREG gp, R_GP*R_SZ(sp)
    427         STREG k0, R_MDHI*R_SZ(sp)
     443        STREG t0, R_MDHI*R_SZ(sp)
    428444        STREG fp, R_FP*R_SZ(sp)
    429445        .set noat
     
    431447        .set at
    432448
    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 */
    437 
     449        MFC0     t0,C0_SR
     450        MFC0     t1,C0_EPC
     451        STREG    t0,R_SR*R_SZ(sp)
     452        STREG    t1,R_EPC*R_SZ(sp)
     453
     454
     455#ifdef INSTRUMENT
     456        lw t2, _Thread_Executing
     457        nop
     458        sw t2, 0x8001FFF0
     459
     460        sw t0, 0x8001F050
     461        sw t1, 0x8001F054
     462
     463        li t0, 0xdeadbeef
     464        li t1, 0xdeadbeef
     465        li t2, 0xdeadbeef
     466                       
     467        sw ra, 0x8001F000
     468        sw v0, 0x8001F004
     469        sw v1, 0x8001F008
     470        sw a0, 0x8001F00c
     471        sw a1, 0x8001F010
     472        sw a2, 0x8001F014
     473        sw a3, 0x8001F018
     474        sw t0, 0x8001F01c
     475        sw t1, 0x8001F020
     476        sw t2, 0x8001F024
     477        sw t3, 0x8001F028
     478        sw t4, 0x8001F02c
     479        sw t5, 0x8001F030
     480        sw t6, 0x8001F034
     481        sw t7, 0x8001F038
     482        sw t8, 0x8001F03c
     483        sw t9, 0x8001F040
     484        sw gp, 0x8001F044
     485        sw fp, 0x8001F048
     486#endif
     487       
    438488/* determine if an interrupt generated this exception */
    439489
    440490        MFC0     k0,C0_CAUSE
    441491        NOP
    442         and      k1,k0,CAUSE_EXCMASK
     492
     493        and      k1,k0,CAUSE_EXCMASK
    443494        beq      k1, 0, _ISR_Handler_1
    444495
    445496_ISR_Handler_Exception:
    446         nop
    447         jal    mips_vector_exceptions
    448         nop
     497
     498        /* if we return from the exception, it is assumed nothing */
     499        /* bad is going on and we can continue to run normally */
     500       
     501        move     a0,sp
     502        jal      mips_vector_exceptions
     503        nop
     504        j        _ISR_Handler_exit
     505        nop
    449506
    450507_ISR_Handler_1:
     
    453510        and      k0,CAUSE_IPMASK
    454511        and      k0,k1
    455         beq      k0,zero,_ISR_Handler_exit
    456                 /* external interrupt not enabled, ignore */
    457                 /* but if it's not an exception or an interrupt, */
    458                 /* Then where did it come from??? */
    459         nop
    460 
     512
     513        /* external interrupt not enabled, ignore */
     514        /* but if it's not an exception or an interrupt, */
     515        /* Then where did it come from??? */
     516       
     517        beq      k0,zero,_ISR_Handler_exit
     518       
     519        li       t2,1           /* set a flag so we process interrupts */
     520       
    461521  /*
    462522   *  save some or all context on stack
     
    488548   *  interrupt source and actually vector to device ISR handlers.
    489549   */
    490 
    491         jal    mips_vector_isr_handlers
     550        move     a0,sp
     551        jal      mips_vector_isr_handlers
    492552        nop
    493553
     
    528588        nop
    529589
    530   /*
    531    *  call _Thread_Dispatch() or prepare to return to _ISR_Dispatch
    532    */
    533         LDREG    t0,R_SR*R_SZ(sp)         /* XXX restore SR on the stack */
     590       
     591       
     592#ifdef INSTRUMENT
     593        li      t0,0x11111111
     594        sw      t0,0x8001F104
     595#endif
     596       
     597  /* restore interrupt state from the saved status register,
     598   * if the isr vectoring didn't so we allow nested interrupts to
     599   * occur */
     600               
     601        LDREG    t0,R_SR*R_SZ(sp)
    534602        NOP
    535603        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:
     604        rfe
     605       
     606
    543607        jal _Thread_Dispatch
    544608        nop
    545        
    546         li      t0,0x10011001
    547         sw      t0,0x8001ff00
    548         nop
     609
     610#ifdef INSTRUMENT
     611        li      t0,0x22222222
     612        sw      t0,0x8001F100
     613#endif
     614
     615       
     616                       
     617
    549618  /*
    550619   *  prepare to get out of interrupt
     
    557626
    558627_ISR_Handler_exit:
    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 */
    561         MTC0     t0, C0_EPC               /* XXX */
    562         MTC0     t1, C0_SR
    563 
    564 /* restore interrupt context from stack */
    565      
     628        LDREG    t0, R_SR*R_SZ(sp)
     629        NOP
     630        MTC0     t0, C0_SR
     631
     632/* restore context from stack */
     633
     634#ifdef INSTRUMENT
     635        lw      t0,_Thread_Executing
     636        nop
     637        sw      t0, 0x8001FFF4
     638#endif
     639
    566640        LDREG k0, R_MDLO*R_SZ(sp)
    567         LDREG a2, R_A2*R_SZ(sp)
     641        LDREG t0, R_T0*R_SZ(sp)
    568642        mtlo  k0
    569643        LDREG k0, R_MDHI*R_SZ(sp)           
    570         LDREG a3, R_A3*R_SZ(sp)
     644        LDREG t1, R_T1*R_SZ(sp)
    571645        mthi  k0
    572         LDREG t0, R_T0*R_SZ(sp)
    573         LDREG t1, R_T1*R_SZ(sp)
    574646        LDREG t2, R_T2*R_SZ(sp)
    575647        LDREG t3, R_T3*R_SZ(sp)
     
    585657        LDREG a0, R_A0*R_SZ(sp)
    586658        LDREG a1, R_A1*R_SZ(sp)
     659        LDREG a2, R_A2*R_SZ(sp)
     660        LDREG a3, R_A3*R_SZ(sp)
    587661        LDREG v1, R_V1*R_SZ(sp)
    588662        LDREG v0, R_V0*R_SZ(sp)
    589         .set noat
     663
     664#ifdef INSTRUMENT
     665        sw ra, 0x8001F000
     666        sw v0, 0x8001F004
     667        sw v1, 0x8001F008
     668        sw a0, 0x8001F00c
     669        sw a1, 0x8001F010
     670        sw a2, 0x8001F014
     671        sw a3, 0x8001F018
     672        sw t0, 0x8001F01c
     673        sw t1, 0x8001F020
     674        sw t2, 0x8001F024
     675        sw t3, 0x8001F028
     676        sw t4, 0x8001F02c
     677        sw t5, 0x8001F030
     678        sw t6, 0x8001F034
     679        sw t7, 0x8001F038
     680        sw t8, 0x8001F03c
     681        sw t9, 0x8001F040
     682        sw gp, 0x8001F044
     683        sw fp, 0x8001F048
     684#endif
     685       
     686        LDREG     k0, R_EPC*R_SZ(sp)
     687       
     688        .set noat
    590689        LDREG AT, R_AT*R_SZ(sp)
    591690        .set at
    592691
    593692        ADDIU     sp,sp,EXCP_STACK_SIZE
    594 
    595         MFC0      k0, C0_EPC
    596         NOP
    597         j         k0
    598         rfe                     /* Might not need to do RFE here... */
     693        j         k0
     694        rfe
    599695        nop
    600696
     
    612708ENDFRAME(mips_break)
    613709
    614 
Note: See TracChangeset for help on using the changeset viewer.