;------------------------------------------------------------------------------
;       JView
;       Frank Lyonnet 1993
;       Noyau bi thread non preemptif
;       Author : Frank Lyonnet
;------------------------------------------------------------------------------

                GET     h.ASMRegs
                GET     h.SWInames

                AREA |C$$code|, CODE, READONLY

;------------------------------------------------------------------------------
;       my_thread_enter
;------------------------------------------------------------------------------
;       parametre no 1 : my_thread Thread
;------------------------------------------------------------------------------

                EXPORT  |my_thread_enter|

|my_thread_enter|

                LDR     ip,=CallerCtx
                STMIA   ip!,{a1-lr}
                STMIA   ip!,{lr}                                ;store caller context

                LDR     ip,=CalledCtx
                LDMIA   ip,{a1-pc}                              ;restore called context

;------------------------------------------------------------------------------
;       my_thread_leave
;------------------------------------------------------------------------------
;       parametre no 1 : my_thread_return_code Code
;------------------------------------------------------------------------------

                EXPORT  |my_thread_leave|

|my_thread_leave|

                LDR     ip,=CalledCtx
                STMIA   ip!,{a1-lr}
                STMIA   ip!,{lr}                                ;store called context

                LDR     ip,=CallerCtx
                ADD     ip,ip,#4                                ;passe Code
                LDMIA   ip,{a2-pc}                              ;restore caller context

                EXPORT  |CallerCtx|
                EXPORT  |CalledCtx|

|CallerCtx|
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0

|CalledCtx|
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0
                DCD     0

                END
