summaryrefslogtreecommitdiff
path: root/sys/arch/arm32/include/katelib.h
blob: 3fe6f061d423118590730c6a77826e1a17aa3480 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/* $NetBSD: katelib.h,v 1.5 1996/03/28 21:35:51 mark Exp $ */

/*
 * Copyright (c) 1994,1995 Mark Brinicombe.
 * Copyright (c) 1994 Brini.
 * All rights reserved.
 *
 * This code is derived from software written for Brini by Mark Brinicombe
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *	This product includes software developed by Brini.
 * 4. The name of the company nor the name of the author may be used to
 *    endorse or promote products derived from this software without specific
 *    prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY BRINI ``AS IS'' AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL BRINI OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * RiscBSD kernel project
 *
 * katelib.h
 *
 * Prototypes for machine specific functions. Most of these
 * could be inlined.
 *
 * This should not really be a separate header file. Eventually I will merge
 * this into other header files once I have decided where the declarations
 * should go. 
 *
 * Created      : 18/09/94
 *
 * Based on kate/katelib/prototypes.h
 */

#include <sys/types.h>

#ifdef _KERNEL

/* Assembly modules */

/* In setcpsr.S */

u_int SetCPSR __P((u_int, u_int));
u_int GetCPSR __P((void));

/* In coproc15.S */

void tlbflush __P((void));
void tlbpurge __P((u_int));
void idcflush __P((void));
void cpu_control __P((u_int));
void cpu_domains __P((u_int));
void setttb __P((u_int));

u_int cpu_id __P((void));
u_int cpu_faultstatus __P((void));
u_int cpu_faultaddress __P((void));

/* In setstack.S */

void set_stackptr __P((u_int, u_int));
u_int get_stackptr __P((u_int));

/* In blockio.S */

void insw __P((u_int /*io*/, u_int /*dest*/, u_int /*size*/));
void outsw __P((u_int /*io*/, u_int /*src*/, u_int /*size*/));
void insw16 __P((u_int /*io*/, u_int /*dest*/, u_int /*size*/));
void outsw16 __P((u_int /*io*/, u_int /*src*/, u_int /*size*/));

/* Macros for reading and writing words, shorts, bytes */

#define WriteWord(a, b) \
*((volatile unsigned int *)(a)) = (b)

#define ReadWord(a) \
(*((volatile unsigned int *)(a)))

#define WriteShort(a, b) \
*((volatile unsigned int *)(a)) = ((b) | ((b) << 16))

#define ReadShort(a) \
((*((volatile unsigned int *)(a))) & 0xffff)

#define WriteByte(a, b) \
*((volatile unsigned char *)(a)) = (b)

#define ReadByte(a) \
(*((volatile unsigned char *)(a)))

/* Define in/out macros */

#define inb(port)		ReadByte((port))
#define outb(port, byte)	WriteByte((port), (byte))
#define inw(port)		ReadShort((port))
#define outw(port, word)	WriteShort((port), (word))
#define inl(port)		ReadWord((port))
#define outl(port, lword)	WriteWord((port), (lword))

/* Prototypes that are wandering the streets */

#ifdef _ARM32_FRAME_H
void postmortem __P((trapframe_t */*frame*/));
#endif
u_int traceback __P(());
u_int simpletraceback __P(());
u_int irqtraceback __P((u_int, u_int));
int shell __P(());
void kstack_stuff __P((struct proc */*p*/));
void boot0 __P(());
void bootsync __P((void));
#endif

/* End of katelib.h */