Changeset e34a141 in mainline for arch/ppc32/src/exception.S


Ignore:
Timestamp:
2006-05-02T16:03:58Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
738ad2e
Parents:
9417cdc
Message:

ppc32 work:
(hopefully) final exception entry and exit rewrite
don't use FPU instructions in the kernel
syscall support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/ppc32/src/exception.S

    r9417cdc re34a141  
    3434.macro CONTEXT_STORE
    3535       
    36         # save SP in SPRG1
    37         # save R12 in SPRG2, backup CR in R12
    38 
    39         mtsprg1 sp
    40         mtsprg2 r12
     36        # save R12 in SPRG1, backup CR in R12
     37        # save SP in SPRG2
     38
     39        mtsprg1 r12
    4140        mfcr r12
     41        mtsprg2 sp
    4242       
    4343        # check whether SP is in kernel
     
    5656                # stack is in kernel
    5757               
    58                 mfsprg1 sp
     58                mfsprg2 sp
    5959                subis sp, sp, 0x8000
    6060       
    6161        2:
    6262       
    63         subi sp, sp, 140
     63        subi sp, sp, 148
    6464        stw r0, 0(sp)
    6565        stw r2, 4(sp)
     
    9393        stw r31, 116(sp)
    9494       
    95         mfsrr0 r3
    96         stw r3, 120(sp)
    97        
    98         mfsrr1 r3
    99         stw r3, 124(sp)
    100        
    101         mflr r3
    102         stw r3, 128(sp)
    103        
     95        stw r12, 120(sp)
     96       
     97        mfsrr0 r12
     98        stw r12, 124(sp)
     99       
     100        mfsrr1 r12
     101        stw r12, 128(sp)
     102       
     103        mflr r12
    104104        stw r12, 132(sp)
    105105       
    106         mfctr r3
    107         stw r3, 136(sp)
    108        
    109         mfxer r3
    110         stw r3, 140(sp)
     106        mfctr r12
     107        stw r12, 136(sp)
     108       
     109        mfxer r12
     110        stw r12, 140(sp)
     111       
     112        mfsprg1 r12
     113        stw r12, 144(sp)
     114       
     115        mfsprg2 r12
     116        stw r12, 148(sp)
    111117.endm
     118
     119.org 0x060
     120jump_to_kernel:
     121        lis r12, iret@ha
     122        addi r12, r12, iret@l
     123        mtlr r12
     124
     125        mfmsr r12
     126        ori r12, r12, (msr_ir | msr_dr)@l
     127        mtsrr1 r12
     128       
     129        addis sp, sp, 0x8000
     130        mr r4, sp
     131        rfi
     132
     133jump_to_kernel_syscall:
     134        lis r12, syscall_handler@ha
     135        addi r12, r12, syscall_handler@l
     136        mtsrr0 r12
     137       
     138        lis r12, iret_syscall@ha
     139        addi r12, r12, iret_syscall@l
     140        mtlr r12
     141
     142        mfmsr r12
     143        ori r12, r12, (msr_ir | msr_dr)@l
     144        mtsrr1 r12
     145       
     146        addis sp, sp, 0x8000
     147        rfi
    112148
    113149.org 0x100
     
    126162        CONTEXT_STORE
    127163       
    128         lis r3, pht_refill@ha
    129         addi r3, r3, pht_refill@l
    130         mtsrr0 r3
    131        
    132         mfmsr r3
    133         ori r3, r3, (msr_ir | msr_dr)@l
    134         mtsrr1 r3
    135        
    136         lis r3, iret@ha
    137         addi r3, r3, iret@l
    138         mtlr r3
    139        
    140         addis sp, sp, 0x8000
     164        lis r12, pht_refill@ha
     165        addi r12, r12, pht_refill@l
     166        mtsrr0 r12
     167       
    141168        li r3, 1
    142         mr r4, sp
    143         rfi
     169        b jump_to_kernel
    144170
    145171.org 0x400
     
    148174        CONTEXT_STORE
    149175       
    150         lis r3, pht_refill@ha
    151         addi r3, r3, pht_refill@l
    152         mtsrr0 r3
    153        
    154         mfmsr r3
    155         ori r3, r3, (msr_ir | msr_dr)@l
    156         mtsrr1 r3
    157        
    158         lis r3, iret@ha
    159         addi r3, r3, iret@l
    160         mtlr r3
    161        
    162         addis sp, sp, 0x8000
     176        lis r12, pht_refill@ha
     177        addi r12, r12, pht_refill@l
     178        mtsrr0 r12
     179       
    163180        li r3, 0
    164         mr r4, sp
    165         rfi
     181        b jump_to_kernel
    166182
    167183.org 0x500
     
    190206        CONTEXT_STORE   
    191207
    192         lis r3, exc_dispatch@ha
    193         addi r3, r3, exc_dispatch@l
    194         mtsrr0 r3
    195        
    196         mfmsr r3
    197         ori r3, r3, (msr_ir | msr_dr)@l
    198         mtsrr1 r3
    199        
    200         lis r3, iret@ha
    201         addi r3, r3, iret@l
    202         mtlr r3
    203        
    204         addis sp, sp, 0x8000
     208        lis r12, exc_dispatch@ha
     209        addi r12, r12, exc_dispatch@l
     210        mtsrr0 r12
     211       
    205212        li r3, 10
    206         mr r4, sp
    207         rfi
     213        b jump_to_kernel
    208214
    209215.org 0xa00
     
    220226.global exc_syscall
    221227exc_syscall:
    222         b exc_syscall
     228        CONTEXT_STORE   
     229       
     230        b jump_to_kernel_syscall
    223231
    224232.org 0xd00
Note: See TracChangeset for help on using the changeset viewer.