Changeset fca4207 in mainline for libc/arch/ppc32/src/psthread.S


Ignore:
Timestamp:
2006-05-04T11:04:23Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4a7c273
Parents:
f33cb0b9
Message:

preliminary TLS & pthread support for ppc32

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libc/arch/ppc32/src/psthread.S

    rf33cb0b9 rfca4207  
    3232.global context_restore
    3333
     34#include <libarch/regname.h>
    3435#include <libarch/context_offset.h>
    3536
     37.macro CONTEXT_STORE r
     38        stw sp, OFFSET_SP(\r)
     39        stw r2, OFFSET_R2(\r)
     40        stw r13, OFFSET_R13(\r)
     41        stw r14, OFFSET_R14(\r)
     42        stw r15, OFFSET_R15(\r)
     43        stw r16, OFFSET_R16(\r)
     44        stw r17, OFFSET_R17(\r)
     45        stw r18, OFFSET_R18(\r)
     46        stw r19, OFFSET_R19(\r)
     47        stw r20, OFFSET_R20(\r)
     48        stw r21, OFFSET_R21(\r)
     49        stw r22, OFFSET_R22(\r)
     50        stw r23, OFFSET_R23(\r)
     51        stw r24, OFFSET_R24(\r)
     52        stw r25, OFFSET_R25(\r)
     53        stw r26, OFFSET_R26(\r)
     54        stw r27, OFFSET_R27(\r)
     55        stw r28, OFFSET_R28(\r)
     56        stw r29, OFFSET_R29(\r)
     57        stw r30, OFFSET_R30(\r)
     58        stw r31, OFFSET_R31(\r)
     59.endm
     60
     61.macro CONTEXT_LOAD r
     62        lwz sp, OFFSET_SP(\r)
     63        lwz r2, OFFSET_R2(\r)
     64        lwz r13, OFFSET_R13(\r)
     65        lwz r14, OFFSET_R14(\r)
     66        lwz r15, OFFSET_R15(\r)
     67        lwz r16, OFFSET_R16(\r)
     68        lwz r17, OFFSET_R17(\r)
     69        lwz r18, OFFSET_R18(\r)
     70        lwz r19, OFFSET_R19(\r)
     71        lwz r20, OFFSET_R20(\r)
     72        lwz r21, OFFSET_R21(\r)
     73        lwz r22, OFFSET_R22(\r)
     74        lwz r23, OFFSET_R23(\r)
     75        lwz r24, OFFSET_R24(\r)
     76        lwz r25, OFFSET_R25(\r)
     77        lwz r26, OFFSET_R26(\r)
     78        lwz r27, OFFSET_R27(\r)
     79        lwz r28, OFFSET_R28(\r)
     80        lwz r29, OFFSET_R29(\r)
     81        lwz r30, OFFSET_R30(\r)
     82        lwz r31, OFFSET_R31(\r)
     83.endm
     84
    3685context_save:
     86        CONTEXT_STORE r3
     87       
     88        mflr r4
     89        stw r4, OFFSET_PC(r3)
     90       
     91        mfcr r4
     92        stw r4, OFFSET_CR(r3)
     93       
     94        # context_save returns 1
     95        li r3, 1
    3796        blr
    3897
    3998
    4099context_restore:
     100        CONTEXT_LOAD r3
     101       
     102        lwz r4, OFFSET_CR(r3)
     103        mtcr r4
     104       
     105        lwz r4, OFFSET_PC(r3)
     106        mtlr r4
     107       
     108        # context_restore returns 0
     109        li r3, 0
    41110        blr
Note: See TracChangeset for help on using the changeset viewer.