1 /*
2 ** asm-m68k/amigappc.h -- This header defines some values and pointers for
3 **                        the Phase 5 PowerUp card.
4 **
5 ** Copyright 1997, 1998 by Phase5, Germany.
6 **
7 ** This file is subject to the terms and conditions of the GNU General Public
8 ** License.  See the file COPYING in the main directory of this archive
9 ** for more details.
10 **
11 ** Created: 7/22/97 by Jesper Skov
12 */
13 
14 #ifdef __KERNEL__
15 #ifndef _M68K_AMIGAPPC_H
16 #define _M68K_AMIGAPPC_H
17 
18 #ifndef __ASSEMBLY__
19 
20 /* #include <asm/system.h> */
21 #define mb()  __asm__ __volatile__ ("sync" : : : "memory")
22 
23 #define APUS_WRITE(_a_, _v_)				\
24 do {							\
25 	(*((volatile unsigned char *)(_a_)) = (_v_));	\
26 	mb();						\
27 } while (0)
28 
29 #define APUS_READ(_a_, _v_)				\
30 do {							\
31 	(_v_) = (*((volatile unsigned char *)(_a_)));	\
32 	mb();						\
33 } while (0)
34 #endif /* ndef __ASSEMBLY__ */
35 
36 /* Maybe add a [#ifdef WANT_ZTWOBASE] condition to amigahw.h? */
37 #define zTwoBase (0x80000000)
38 
39 #define APUS_IPL_BASE   	(zTwoBase + 0x00f60000)
40 #define APUS_REG_RESET    	(APUS_IPL_BASE + 0x00)
41 #define APUS_REG_WAITSTATE    	(APUS_IPL_BASE + 0x10)
42 #define APUS_REG_SHADOW    	(APUS_IPL_BASE + 0x18)
43 #define APUS_REG_LOCK		(APUS_IPL_BASE + 0x20)
44 #define APUS_REG_INT    	(APUS_IPL_BASE + 0x28)
45 #define APUS_IPL_EMU		(APUS_IPL_BASE + 0x30)
46 #define APUS_INT_LVL		(APUS_IPL_BASE + 0x38)
47 
48 #define REGSHADOW_SETRESET	(0x80)
49 #define REGSHADOW_SELFRESET	(0x40)
50 
51 #define REGLOCK_SETRESET	(0x80)
52 #define REGLOCK_BLACKMAGICK1	(0x40)
53 #define REGLOCK_BLACKMAGICK2	(0x20)
54 #define REGLOCK_BLACKMAGICK3	(0x10)
55 
56 #define REGWAITSTATE_SETRESET	(0x80)
57 #define REGWAITSTATE_PPCW	(0x08)
58 #define REGWAITSTATE_PPCR	(0x04)
59 
60 #define REGRESET_SETRESET	(0x80)
61 #define REGRESET_PPCRESET	(0x10)
62 #define REGRESET_M68KRESET	(0x08)
63 #define REGRESET_AMIGARESET	(0x04)
64 #define REGRESET_AUXRESET	(0x02)
65 #define REGRESET_SCSIRESET	(0x01)
66 
67 #define REGINT_SETRESET		(0x80)
68 #define REGINT_ENABLEIPL	(0x02)
69 #define REGINT_INTMASTER	(0x01)
70 
71 #define IPLEMU_SETRESET		(0x80)
72 #define IPLEMU_DISABLEINT	(0x40)
73 #define IPLEMU_IPL2		(0x20)
74 #define IPLEMU_IPL1		(0x10)
75 #define IPLEMU_IPL0		(0x08)
76 #define IPLEMU_PPCIPL2		(0x04)
77 #define IPLEMU_PPCIPL1		(0x02)
78 #define IPLEMU_PPCIPL0		(0x01)
79 #define IPLEMU_IPLMASK		(IPLEMU_PPCIPL2|IPLEMU_PPCIPL1|IPLEMU_PPCIPL0)
80 
81 #define INTLVL_SETRESET         (0x80)
82 #define INTLVL_MASK             (0x7f)
83 
84 #endif /* _M68k_AMIGAPPC_H */
85 #endif /* __KERNEL__ */
86