Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ppc32/src/asm.S

    rb66cc97 r9d58539  
    2727 */
    2828
    29 #include <abi/asmtool.h>
    3029#include <arch/asm/regname.h>
    3130#include <arch/msr.h>
    32 #include <arch/istate_struct.h>
    3331
    3432.text
    3533
    36 FUNCTION_BEGIN(userspace_asm)
     34.global userspace_asm
     35.global iret
     36.global iret_syscall
     37.global memcpy_from_uspace
     38.global memcpy_to_uspace
     39.global memcpy_from_uspace_failover_address
     40.global memcpy_to_uspace_failover_address
     41.global early_putchar
     42
     43userspace_asm:
     44       
    3745        /*
    3846         * r3 = uspace_uarg
     
    4654        rlwinm r31, r31, 0, 17, 15
    4755        mtmsr r31
    48         isync
    4956       
    5057        /* Set entry point */
     
    5259        mtsrr0 r5
    5360       
    54         /* Set privileged state, enable interrupts */
     61        /* Set problem state, enable interrupts */
    5562       
    5663        ori r31, r31, MSR_PR
     
    6976       
    7077        rfi
    71 FUNCTION_END(userspace_asm)
    72 
    73 SYMBOL(iret)
     78
     79iret:
     80       
    7481        /* Disable interrupts */
    7582       
     
    7784        rlwinm r31, r31, 0, 17, 15
    7885        mtmsr r31
    79         isync
    80        
    81         lwz r0, ISTATE_OFFSET_R0(sp)
    82         lwz r2, ISTATE_OFFSET_R2(sp)
    83         lwz r3, ISTATE_OFFSET_R3(sp)
    84         lwz r4, ISTATE_OFFSET_R4(sp)
    85         lwz r5, ISTATE_OFFSET_R5(sp)
    86         lwz r6, ISTATE_OFFSET_R6(sp)
    87         lwz r7, ISTATE_OFFSET_R7(sp)
    88         lwz r8, ISTATE_OFFSET_R8(sp)
    89         lwz r9, ISTATE_OFFSET_R9(sp)
    90         lwz r10, ISTATE_OFFSET_R10(sp)
    91         lwz r11, ISTATE_OFFSET_R11(sp)
    92         lwz r13, ISTATE_OFFSET_R13(sp)
    93         lwz r14, ISTATE_OFFSET_R14(sp)
    94         lwz r15, ISTATE_OFFSET_R15(sp)
    95         lwz r16, ISTATE_OFFSET_R16(sp)
    96         lwz r17, ISTATE_OFFSET_R17(sp)
    97         lwz r18, ISTATE_OFFSET_R18(sp)
    98         lwz r19, ISTATE_OFFSET_R19(sp)
    99         lwz r20, ISTATE_OFFSET_R20(sp)
    100         lwz r21, ISTATE_OFFSET_R21(sp)
    101         lwz r22, ISTATE_OFFSET_R22(sp)
    102         lwz r23, ISTATE_OFFSET_R23(sp)
    103         lwz r24, ISTATE_OFFSET_R24(sp)
    104         lwz r25, ISTATE_OFFSET_R25(sp)
    105         lwz r26, ISTATE_OFFSET_R26(sp)
    106         lwz r27, ISTATE_OFFSET_R27(sp)
    107         lwz r28, ISTATE_OFFSET_R28(sp)
    108         lwz r29, ISTATE_OFFSET_R29(sp)
    109         lwz r30, ISTATE_OFFSET_R30(sp)
    110         lwz r31, ISTATE_OFFSET_R31(sp)
    111        
    112         lwz r12, ISTATE_OFFSET_CR(sp)
     86       
     87        lwz r0, 8(sp)
     88        lwz r2, 12(sp)
     89        lwz r3, 16(sp)
     90        lwz r4, 20(sp)
     91        lwz r5, 24(sp)
     92        lwz r6, 28(sp)
     93        lwz r7, 32(sp)
     94        lwz r8, 36(sp)
     95        lwz r9, 40(sp)
     96        lwz r10, 44(sp)
     97        lwz r11, 48(sp)
     98        lwz r13, 52(sp)
     99        lwz r14, 56(sp)
     100        lwz r15, 60(sp)
     101        lwz r16, 64(sp)
     102        lwz r17, 68(sp)
     103        lwz r18, 72(sp)
     104        lwz r19, 76(sp)
     105        lwz r20, 80(sp)
     106        lwz r21, 84(sp)
     107        lwz r22, 88(sp)
     108        lwz r23, 92(sp)
     109        lwz r24, 96(sp)
     110        lwz r25, 100(sp)
     111        lwz r26, 104(sp)
     112        lwz r27, 108(sp)
     113        lwz r28, 112(sp)
     114        lwz r29, 116(sp)
     115        lwz r30, 120(sp)
     116        lwz r31, 124(sp)
     117       
     118        lwz r12, 128(sp)
    113119        mtcr r12
    114120       
    115         lwz r12, ISTATE_OFFSET_PC(sp)
     121        lwz r12, 132(sp)
    116122        mtsrr0 r12
    117123       
    118         lwz r12, ISTATE_OFFSET_SRR1(sp)
     124        lwz r12, 136(sp)
    119125        mtsrr1 r12
    120126       
    121         lwz r12, ISTATE_OFFSET_LR(sp)
     127        lwz r12, 140(sp)
    122128        mtlr r12
    123129       
    124         lwz r12, ISTATE_OFFSET_CTR(sp)
     130        lwz r12, 144(sp)
    125131        mtctr r12
    126132       
    127         lwz r12, ISTATE_OFFSET_XER(sp)
     133        lwz r12, 148(sp)
    128134        mtxer r12
    129135       
    130         lwz r12, ISTATE_OFFSET_R12(sp)
    131         lwz sp, ISTATE_OFFSET_SP(sp)
     136        lwz r12, 156(sp)
     137        lwz sp, 160(sp)
    132138       
    133139        rfi
    134140
    135 SYMBOL(iret_syscall)
     141iret_syscall:
     142       
     143        /* Reset decrementer */
     144       
     145        li r31, 1000
     146        mtdec r31
     147       
    136148        /* Disable interrupts */
    137149       
     
    139151        rlwinm r31, r31, 0, 17, 15
    140152        mtmsr r31
    141         isync
    142        
    143         lwz r0, ISTATE_OFFSET_R0(sp)
    144         lwz r2, ISTATE_OFFSET_R2(sp)
    145         lwz r4, ISTATE_OFFSET_R4(sp)
    146         lwz r5, ISTATE_OFFSET_R5(sp)
    147         lwz r6, ISTATE_OFFSET_R6(sp)
    148         lwz r7, ISTATE_OFFSET_R7(sp)
    149         lwz r8, ISTATE_OFFSET_R8(sp)
    150         lwz r9, ISTATE_OFFSET_R9(sp)
    151         lwz r10, ISTATE_OFFSET_R10(sp)
    152         lwz r11, ISTATE_OFFSET_R11(sp)
    153         lwz r13, ISTATE_OFFSET_R13(sp)
    154         lwz r14, ISTATE_OFFSET_R14(sp)
    155         lwz r15, ISTATE_OFFSET_R15(sp)
    156         lwz r16, ISTATE_OFFSET_R16(sp)
    157         lwz r17, ISTATE_OFFSET_R17(sp)
    158         lwz r18, ISTATE_OFFSET_R18(sp)
    159         lwz r19, ISTATE_OFFSET_R19(sp)
    160         lwz r20, ISTATE_OFFSET_R20(sp)
    161         lwz r21, ISTATE_OFFSET_R21(sp)
    162         lwz r22, ISTATE_OFFSET_R22(sp)
    163         lwz r23, ISTATE_OFFSET_R23(sp)
    164         lwz r24, ISTATE_OFFSET_R24(sp)
    165         lwz r25, ISTATE_OFFSET_R25(sp)
    166         lwz r26, ISTATE_OFFSET_R26(sp)
    167         lwz r27, ISTATE_OFFSET_R27(sp)
    168         lwz r28, ISTATE_OFFSET_R28(sp)
    169         lwz r29, ISTATE_OFFSET_R29(sp)
    170         lwz r30, ISTATE_OFFSET_R30(sp)
    171         lwz r31, ISTATE_OFFSET_R31(sp)
    172        
    173         lwz r12, ISTATE_OFFSET_CR(sp)
     153       
     154        lwz r0, 8(sp)
     155        lwz r2, 12(sp)
     156        lwz r4, 20(sp)
     157        lwz r5, 24(sp)
     158        lwz r6, 28(sp)
     159        lwz r7, 32(sp)
     160        lwz r8, 36(sp)
     161        lwz r9, 40(sp)
     162        lwz r10, 44(sp)
     163        lwz r11, 48(sp)
     164        lwz r13, 52(sp)
     165        lwz r14, 56(sp)
     166        lwz r15, 60(sp)
     167        lwz r16, 64(sp)
     168        lwz r17, 68(sp)
     169        lwz r18, 72(sp)
     170        lwz r19, 76(sp)
     171        lwz r20, 80(sp)
     172        lwz r21, 84(sp)
     173        lwz r22, 88(sp)
     174        lwz r23, 92(sp)
     175        lwz r24, 96(sp)
     176        lwz r25, 100(sp)
     177        lwz r26, 104(sp)
     178        lwz r27, 108(sp)
     179        lwz r28, 112(sp)
     180        lwz r29, 116(sp)
     181        lwz r30, 120(sp)
     182        lwz r31, 124(sp)
     183       
     184        lwz r12, 128(sp)
    174185        mtcr r12
    175186       
    176         lwz r12, ISTATE_OFFSET_PC(sp)
     187        lwz r12, 132(sp)
    177188        mtsrr0 r12
    178189       
    179         lwz r12, ISTATE_OFFSET_SRR1(sp)
     190        lwz r12, 136(sp)
    180191        mtsrr1 r12
    181192       
    182         lwz r12, ISTATE_OFFSET_LR(sp)
     193        lwz r12, 140(sp)
    183194        mtlr r12
    184195       
    185         lwz r12, ISTATE_OFFSET_CTR(sp)
     196        lwz r12, 144(sp)
    186197        mtctr r12
    187198       
    188         lwz r12, ISTATE_OFFSET_XER(sp)
     199        lwz r12, 148(sp)
    189200        mtxer r12
    190201       
    191         lwz r12, ISTATE_OFFSET_R12(sp)
    192         lwz sp, ISTATE_OFFSET_SP(sp)
     202        lwz r12, 156(sp)
     203        lwz sp, 160(sp)
    193204       
    194205        rfi
    195206
    196 FUNCTION_BEGIN(memcpy_from_uspace)
    197 FUNCTION_BEGIN(memcpy_to_uspace)
     207memcpy_from_uspace:
     208memcpy_to_uspace:
     209       
    198210        srwi. r7, r5, 3
    199211        addi r6, r3, -4
     
    256268                mtctr r7
    257269                b 1b
    258 FUNCTION_END(memcpy_from_uspace)
    259 FUNCTION_END(memcpy_to_uspace)
    260 
    261 SYMBOL(memcpy_from_uspace_failover_address)
    262 SYMBOL(memcpy_to_uspace_failover_address)
     270
     271memcpy_from_uspace_failover_address:
     272memcpy_to_uspace_failover_address:
    263273        /* Return zero, failure */
    264274        xor r3, r3, r3
    265275        blr
    266276
    267 FUNCTION_BEGIN(early_putchar)
     277early_putchar:
    268278        blr
    269 FUNCTION_END(early_putchar)
Note: See TracChangeset for help on using the changeset viewer.