Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#define checkmmu(a, b)
2
#define countpagerefs(a, b)
3
 
4
#include "../port/portfns.h"
5
 
6
extern int led(int, int);
7
extern void ledexit(int);
8
extern void delay(int);
9
extern void _uartputs(char*, int);
10
extern int _uartprint(char*, ...);
11
 
12
#pragma	varargck argpos	_uartprint 1
13
 
14
extern void archreboot(void);
15
extern void archreset(void);
16
extern void cachedinv(void);
17
extern void cachedinvse(void*, int);
18
extern void cachedwb(void);
19
extern void cachedwbinv(void);
20
extern void cachedwbinvse(void*, int);
21
extern void cachedwbse(void*, int);
22
extern void cacheiinv(void);
23
extern void cacheinfo(int level, Memcache *cp);
24
extern void cacheuwbinv(void);
25
extern uintptr cankaddr(uintptr pa);
26
extern void chkmissing(void);
27
extern void clockshutdown(void);
28
extern int clz(ulong);
29
extern int cmpswap(long*, long, long);
30
extern void coherence(void);
31
extern void configscreengpio(void);
32
extern u32int controlget(void);
33
extern u32int cpctget(void);
34
extern u32int cpidget(void);
35
extern ulong cprd(int cp, int op1, int crn, int crm, int op2);
36
extern ulong cprdsc(int op1, int crn, int crm, int op2);
37
extern void cpuidprint(void);
38
extern void cpwr(int cp, int op1, int crn, int crm, int op2, ulong val);
39
extern void cpwrsc(int op1, int crn, int crm, int op2, ulong val);
40
#define cycles(ip) *(ip) = lcycles()
41
extern u32int dacget(void);
42
extern void dacput(u32int);
43
extern void dmainit(void);
44
extern int dmastart(void *, int, void *, int, uint, Rendez *, int *);
45
extern void dmatest(void);
46
extern u32int farget(void);
47
extern ulong fprd(int fpreg);
48
extern void fpwr(int fpreg, ulong val);
49
extern u32int fsrget(void);
50
extern u32int getscr(void);
51
extern u32int getpsr(void);
52
extern ulong getwayssets(void);
53
extern u32int ifsrget(void);
54
extern void intrsoff(void);
55
extern int isaconfig(char*, int, ISAConf*);
56
extern int isdmadone(int);
57
extern int ispow2(uvlong);
58
extern void kbdenable(void);
59
extern void l2cacheuinv(void);
60
extern void l2cacheuwb(void);
61
extern void l2cacheuwbinv(void);
62
extern void lastresortprint(char *buf, long bp);
63
extern int log2(ulong);
64
extern void machinit(void);
65
extern void mmuidmap(uintptr phys, int mbs);
66
extern void mmuinvalidate(void);		/* 'mmu' or 'tlb'? */
67
extern void mmuinvalidateaddr(u32int);		/* 'mmu' or 'tlb'? */
68
extern void mousectl(Cmdbuf *cb);
69
extern u32int pidget(void);
70
extern void pidput(u32int);
71
extern vlong probeaddr(uintptr);
72
extern void procrestore(Proc *);
73
extern void procsave(Proc*);
74
extern void procsetup(Proc*);
75
extern void _reset(void);
76
extern void screenclockson(void);
77
extern void screeninit(void);
78
extern void serialputs(char* s, int n);
79
extern void setcachelvl(int);
80
extern void setr13(int, u32int*);
81
extern int tas(void *);
82
extern u32int ttbget(void);
83
extern void ttbput(u32int);
84
extern void watchdoginit(void);
85
 
86
extern int irqenable(int, void (*)(Ureg*, void*), void*, char*);
87
extern int irqdisable(int, void (*)(Ureg*, void*), void*, char*);
88
#define intrenable(i, f, a, b, n)	irqenable((i), (f), (a), (n))
89
#define intrdisable(i, f, a, b, n)	irqdisable((i), (f), (a), (n))
90
extern void vectors(void);
91
extern void vtable(void);
92
 
93
/* dregs, going away */
94
extern int inb(int);
95
extern void outb(int, int);
96
 
97
/*
98
 * Things called in main.
99
 */
100
extern void archconfinit(void);
101
extern void clockinit(void);
102
extern int i8250console(void);
103
extern void links(void);
104
extern void mmuinit(void);
105
extern void touser(uintptr);
106
extern void trapinit(void);
107
 
108
 
109
extern int fpiarm(Ureg*);
110
extern int fpudevprocio(Proc*, void*, long, uintptr, int);
111
extern void fpuinit(void);
112
extern void fpunoted(void);
113
extern void fpunotify(Ureg*);
114
extern void fpuprocrestore(Proc*);
115
extern void fpuprocsave(Proc*);
116
extern void fpusysprocsetup(Proc*);
117
extern void fpusysrfork(Ureg*);
118
extern void fpusysrforkchild(Proc*, Ureg*, Proc*);
119
extern int fpuemu(Ureg*);
120
 
121
/*
122
 * Miscellaneous machine dependent stuff.
123
 */
124
extern char* getenv(char*, char*, int);
125
char*	getconf(char*);
126
uintptr mmukmap(uintptr, uintptr, usize);
127
uintptr mmukunmap(uintptr, uintptr, usize);
128
extern void* mmuuncache(void*, usize);
129
extern void* ucalloc(usize);
130
extern Block* ucallocb(int);
131
extern void* ucallocalign(usize size, int align, int span);
132
extern void ucfree(void*);
133
extern void ucfreeb(Block*);
134
 
135
/*
136
 * Things called from port.
137
 */
138
extern void delay(int);				/* only scheddump() */
139
extern int islo(void);
140
extern void microdelay(int);			/* only edf.c */
141
extern void idlehands(void);
142
extern void setkernur(Ureg*, Proc*);		/* only devproc.c */
143
extern void* sysexecregs(uintptr, ulong, int);
144
extern void sysprocsetup(Proc*);
145
extern void validalign(uintptr, unsigned);
146
 
147
/*
148
 * PCI stuff.
149
 */
150
 
151
int	cas32(void*, u32int, u32int);
152
int	tas32(void*);
153
 
154
#define CASU(p, e, n)	cas32((p), (u32int)(e), (u32int)(n))
155
#define CASV(p, e, n)	cas32((p), (u32int)(e), (u32int)(n))
156
#define CASW(addr, exp, new)	cas32((addr), (exp), (new))
157
#define TAS(addr)	tas32(addr)
158
 
159
extern void forkret(void);
160
extern int userureg(Ureg*);
161
void*	vmap(uintptr, usize);
162
void	vunmap(void*, usize);
163
 
164
extern void kexit(Ureg*);
165
 
166
#define	getpgcolor(a)	0
167
#define	kmapinval()
168
 
169
#define PTR2UINT(p)	((uintptr)(p))
170
#define UINT2PTR(i)	((void*)(i))
171
 
172
#define	waserror()	(up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
173
 
174
#define KADDR(pa)	UINT2PTR(KZERO    | ((uintptr)(pa) & ~KSEGM))
175
#define PADDR(va)	PTR2UINT(PHYSDRAM | ((uintptr)(va) & ~KSEGM))
176
 
177
#define wave(c) *(ulong *)PHYSCONS = (c)
178
 
179
#define MASK(v)	((1UL << (v)) - 1)	/* mask `v' bits wide */