changing circuitry to disable RTC, update initialization to match
[fw/openalt] / swi / swi.h
1 #ifndef _SWI_H_
2 #define _SWI_H_
3
4 //
5 //
6 //
7 typedef enum
8 {
9   SWICALL_YIELDPROCESSOR = 0,   // FreeRTOS xYieldTask (asm)
10   SWICALL_A_LED2SET,            // Set LED2 on or off, return previous state (asm)
11   SWICALL_A_LED2ON,             // LED2 on, return previous state (asm)
12   SWICALL_A_LED2OFF,            // LED2 off, return previous state (asm)
13   SWICALL_A_LED2TOGGLE,         // LED2 toggle, return previous state (asm)
14   SWICALL_C_LED2SET,            // Set LED2 on or off, return previous state (C)
15   SWICALL_C_LED2ON,             // LED2 on, return previous state (C)
16   SWICALL_C_LED2OFF,            // LED2 off, return previous state (C)
17   SWICALL_C_LED2TOGGLE,         // LED2 toggle, return previous state (C)
18 }
19 swiCalls_e;
20
21 //
22 //
23 //
24 #define SWICALL(swiID, swiOut) \
25         asm  volatile (\
26         "swi %a1   \n\t" \
27         "mov %0,r0 \n\t" \
28         : "=r" (swiOut) : "I" (swiID) : "r0", "lr")
29
30 #define SWICALL1(swiID, swiIn, swiOut) \
31         asm  volatile (\
32         "mov r0,%1 \t\n" \
33         "swi %a2   \n\t" \
34         "mov %0,r0 \n\t" \
35         : "=r" (swiOut) : "r" (swiIn), "I" (swiID) : "r0", "lr")
36
37 #define SWICALL2(swiID, swiIn1, swiIn2, swiOut) \
38         asm volatile ( \
39         "mov r0,%1 \t\n" \
40         "mov r1,%2 \t\n" \
41         "swi %a3   \n\t" \
42         "mov %0,r0 \n\t" \
43         : "=r" (swiOut) : "r" (swiIn1), "r" (swiIn2), "I" (swiID) : "r0", "lr")
44
45 #define SWICALL3(swiID, swiIn1, swiIn2, swiIn3, swiOut) \
46         asm volatile ( \
47         "mov r0,%1 \t\n" \
48         "mov r1,%2 \t\n" \
49         "mov r2,%3 \t\n" \
50         "swi %a4   \n\t" \
51         "mov %0,r0 \n\t" \
52         : "=r" (swiOut) : "r" (swiIn1), "r" (swiIn2), "r" (swiIn3), "I" (swiID) : "r0", "lr")
53
54 //
55 //
56 //
57 void swiInit (void);
58 int swiDispatchC (unsigned long r0, unsigned long r1, unsigned long r2, unsigned long swi);
59
60 #endif