Bringing ChocolateCaste-0.7 into the main branch.
[AROS-Contrib.git] / FryingPan / Optical / Registers.h
blob96b44d7ca8f0605547f3436a7d7cb9a3c17464b8
1 /*
2 * FryingPan - Amiga CD/DVD Recording Software (User Interface and supporting Libraries only)
3 * Copyright (C) 2001-2011 Tomasz Wiszkowski Tomasz.Wiszkowski at gmail.com
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public License
7 * as published by the Free Software Foundation; either version 2.1
8 * of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 #ifndef __REGISTERS
21 #define __REGISTERS
23 // what U see here sucks allot but I can't help it.
24 // so far it is the only way I know...
26 #if defined( __AMIGA__ )
28 #define GETA0(var) asm("mov.l a0,%0\n\t" : "=g"(var))
29 #define GETA1(var) asm("mov.l a1,%0\n\t" : "=g"(var))
30 #define GETA2(var) asm("mov.l a2,%0\n\t" : "=g"(var))
31 #define GETA3(var) asm("mov.l a3,%0\n\t" : "=g"(var))
32 #define GETA4(var) asm("mov.l a4,%0\n\t" : "=g"(var))
33 #define GETA5(var) asm("mov.l a5,%0\n\t" : "=g"(var))
34 #define GETA6(var) asm("mov.l a6,%0\n\t" : "=g"(var))
35 #define GETA7(var) asm("mov.l a7,%0\n\t" : "=g"(var))
36 #define GETD0(var) asm("mov.l d0,%0\n\t" : "=g"(var))
37 #define GETD1(var) asm("mov.l d1,%0\n\t" : "=g"(var))
38 #define GETD2(var) asm("mov.l d2,%0\n\t" : "=g"(var))
39 #define GETD3(var) asm("mov.l d3,%0\n\t" : "=g"(var))
40 #define GETD4(var) asm("mov.l d4,%0\n\t" : "=g"(var))
41 #define GETD5(var) asm("mov.l d5,%0\n\t" : "=g"(var))
42 #define GETD6(var) asm("mov.l d6,%0\n\t" : "=g"(var))
43 #define GETD7(var) asm("mov.l d7,%0\n\t" : "=g"(var))
45 #elif defined(__MORPHOS__)
47 #define GETA0(var) asm("mov.l r24,%0\n\t" : "=g"(var))
48 #define GETA1(var) asm("mov.l r25,%0\n\t" : "=g"(var))
49 #define GETA2(var) asm("mov.l r26,%0\n\t" : "=g"(var))
50 #define GETA3(var) asm("mov.l r27,%0\n\t" : "=g"(var))
51 #define GETA4(var) asm("mov.l r28,%0\n\t" : "=g"(var))
52 #define GETA5(var) asm("mov.l r29,%0\n\t" : "=g"(var))
53 #define GETA6(var) asm("mov.l r30,%0\n\t" : "=g"(var))
54 #define GETA7(var) asm("mov.l r31,%0\n\t" : "=g"(var))
55 #define GETD0(var) asm("mov.l r16,%0\n\t" : "=g"(var))
56 #define GETD1(var) asm("mov.l r17,%0\n\t" : "=g"(var))
57 #define GETD2(var) asm("mov.l r18,%0\n\t" : "=g"(var))
58 #define GETD3(var) asm("mov.l r19,%0\n\t" : "=g"(var))
59 #define GETD4(var) asm("mov.l r20,%0\n\t" : "=g"(var))
60 #define GETD5(var) asm("mov.l r21,%0\n\t" : "=g"(var))
61 #define GETD6(var) asm("mov.l r22,%0\n\t" : "=g"(var))
62 #define GETD7(var) asm("mov.l r23,%0\n\t" : "=g"(var))
64 #define R_A0 ({ register APTR ___R_A0 __asm("r24"); ___R_A0; })
65 #define R_A1 ({ register APTR ___R_A1 __asm("r25"); ___R_A1; })
66 #define R_A2 ({ register APTR ___R_A2 __asm("r26"); ___R_A2; })
67 #define R_A3 ({ register APTR ___R_A3 __asm("r27"); ___R_A3; })
68 #define R_A4 ({ register APTR ___R_A4 __asm("r28"); ___R_A4; })
69 #define R_A5 ({ register APTR ___R_A5 __asm("r29"); ___R_A5; })
70 #define R_A6 ({ register APTR ___R_A6 __asm("r30"); ___R_A6; })
71 #define R_A7 ({ register APTR ___R_A7 __asm("r31"); ___R_A7; })
72 #define R_D0 ({ register APTR ___R_D0 __asm("r16"); ___R_D0; })
73 #define R_D1 ({ register APTR ___R_D1 __asm("r17"); ___R_D1; })
74 #define R_D2 ({ register APTR ___R_D2 __asm("r18"); ___R_D2; })
75 #define R_D3 ({ register APTR ___R_D3 __asm("r19"); ___R_D3; })
76 #define R_D4 ({ register APTR ___R_D4 __asm("r20"); ___R_D4; })
77 #define R_D5 ({ register APTR ___R_D5 __asm("r21"); ___R_D5; })
78 #define R_D6 ({ register APTR ___R_D6 __asm("r22"); ___R_D6; })
79 #define R_D7 ({ register APTR ___R_D7 __asm("r23"); ___R_D7; })
81 #elif defined(__AROS__)
83 #endif
86 #endif