revert between 56095 -> 55830 in arch
[AROS.git] / arch / .unmaintained / m68k-pp-native / exec / execstubs.S
blob56fd7e4403023f361bffd32aa003860bd5067c42
1 /*
2     Copyright © 1995-2001, The AROS Development Team. All rights reserved.
3     $Id$
5     Desc: glue functions
6     Lang: english
7 */
9 #include "../include/aros/machine.i"
12     The following functions are guaranteed to preserve
13     all registers. But I don't want to write them completely
14     in assembly - C is generally more readable.
15     So I use those stubs to preserve the registers.
17 #ifdef UseExecstubs
19         .text
20         .balign 16
21         .globl  AROS_SLIB_ENTRY(ObtainSemaphore,Exec)
22 AROS_SLIB_ENTRY(ObtainSemaphore,Exec):
23         movem.l %d0-%d1/%a0-%a1,-(%sp)
24         move.l  %a6,-(%sp)
25         move.l  %a0,-(%sp)
26 #ifdef __PIC__
27         bsr.l   AROS_CSYMNAME(_Exec_ObtainSemaphore)@PLTPC
28 #else
29         jbsr    AROS_CSYMNAME(_Exec_ObtainSemaphore)
30 #endif
31         addq.w  #8,%sp
32         movem.l (%sp)+,%d0-%d1/%a0-%a1
33         rts
35         .globl  AROS_SLIB_ENTRY(ReleaseSemaphore,Exec)
36 AROS_SLIB_ENTRY(ReleaseSemaphore,Exec):
37         movem.l %d0-%d1/%a0-%a1,-(%sp)
38         move.l  %a6,-(%sp)
39         move.l  %a0,-(%sp)
40 #ifdef __PIC__
41         bsr.l   AROS_CSYMNAME(_Exec_ReleaseSemaphore)@PLTPC
42 #else
43         jbsr    AROS_CSYMNAME(_Exec_ReleaseSemaphore)
44 #endif
45         addq.w  #8,%sp
46         movem.l (%sp)+,%d0-%d1/%a0-%a1
47         rts
49         .globl  AROS_SLIB_ENTRY(ObtainSemaphoreShared,Exec)
50 AROS_SLIB_ENTRY(ObtainSemaphoreShared,Exec):
51         movem.l %d0-%d1/%a0-%a1,-(%sp)
52         move.l  %a6,-(%sp)
53         move.l  %a0,-(%sp)
54 #ifdef __PIC__
55         bsr.l   AROS_CSYMNAME(_Exec_ObtainSemaphoreShared)@PLTPC
56 #else
57         jbsr    AROS_CSYMNAME(_Exec_ObtainSemaphoreShared)
58 #endif
59         addq.w  #8,%sp
60         movem.l (%sp)+,%d0-%d1/%a0-%a1
61         rts
63         .globl  AROS_SLIB_ENTRY(Disable,Exec)
64      
65 AROS_SLIB_ENTRY(Disable,Exec):
66         movem.l %d0-%d1/%a0-%a1,-(%sp)
67         move.l  %a6,-(%sp)
68 #ifdef __PIC__
69         bsr.l   AROS_CSYMNAME(_Exec_Disable)@PLTPC
70 #else
71         jbsr    AROS_CSYMNAME(_Exec_Disable)
72 #endif
73         addq.w  #4,%sp
74         movem.l (%sp)+,%d0-%d1/%a0-%a1
75         rts
77         .globl  AROS_SLIB_ENTRY(Enable,Exec)
78 AROS_SLIB_ENTRY(Enable,Exec):
79         movem.l %d0-%d1/%a0-%a1,-(%sp)
80         move.l  %a6,-(%sp)
81 #ifdef __PIC__
82         bsr.l   AROS_CSYMNAME(_Exec_Enable)@PLTPC
83 #else
84         jbsr    AROS_CSYMNAME(_Exec_Enable)
85 #endif
86         addq.w  #4,%sp
87         movem.l (%sp)+,%d0-%d1/%a0-%a1
88         rts
90         .globl  AROS_SLIB_ENTRY(Forbid,Exec)
91 AROS_SLIB_ENTRY(Forbid,Exec):
92         movem.l %d0-%d1/%a0-%a1,-(%sp)
93         move.l  %a6,-(%sp)
94 #ifdef __PIC__
95         bsr.l   AROS_CSYMNAME(_Exec_Forbid)@PLTPC
96 #else
97         jbsr    AROS_CSYMNAME(_Exec_Forbid)
98 #endif
99         addq.w  #4,%sp
100         movem.l (%sp)+,%d0-%d1/%a0-%a1
101         rts
103         .globl  AROS_SLIB_ENTRY(Permit,Exec)
104 AROS_SLIB_ENTRY(Permit,Exec):
105         movem.l %d0-%d1/%a0-%a1,-(%sp)
106         move.l  %a6,-(%sp)
107 #ifdef __PIC__
108         bsr.l   AROS_CSYMNAME(_Exec_Permit)@PLTPC
109 #else
110         jbsr    AROS_CSYMNAME(_Exec_Permit)
111 #endif
112         addq.w  #4,%sp
113         movem.l (%sp)+,%d0-%d1/%a0-%a1
114         rts
117 #endif