changelog shortlog tags branches changeset files revisions annotate raw help

Mercurial > hg > plan9front / sys/src/9/bcm64/fns.h

changeset 7222: 761a37c3fc9a
parent: ba62683c0e2d
child: b1dc95374307
author: cinap_lenrek@felloff.net
date: Thu, 09 May 2019 11:11:45 +0200
permissions: -rw-r--r--
description: bcm64: use MOVP instruction for saving and restoring registers
1 #include "../port/portfns.h"
2 
3 #define waserror() (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
4 
5 /* l.s */
6 extern void sev(void);
7 extern int tas(void *);
8 extern int cmpswap(long*, long, long);
9 extern void coherence(void);
10 extern void idlehands(void);
11 extern uvlong cycles(void);
12 extern int splfhi(void);
13 extern void splflo(void);
14 extern void touser(uintptr sp);
15 extern void forkret(void);
16 extern void noteret(void);
17 extern void returnto(void*);
18 extern void fpsaveregs(void*);
19 extern void fploadregs(void*);
20 
21 extern void setttbr(uintptr pa);
22 extern uintptr getfar(void);
23 
24 extern void flushasidva(uintptr asidva);
25 extern void tlbivae1is(uintptr asidva);
26 
27 extern void flushasidvall(uintptr asidva);
28 extern void tlbivale1is(uintptr asidva);
29 
30 extern void flushasid(uintptr asid);
31 extern void tlbiaside1is(uintptr asid);
32 
33 extern void flushtlb(void);
34 extern void tlbivmalle1(void);
35 
36 /* cache */
37 extern ulong cachesize(int level);
38 
39 extern void cacheiinvse(void*, int);
40 extern void cacheuwbinv(void);
41 extern void cacheiinv(void);
42 
43 extern void cachedwbse(void*, int);
44 extern void cacheduwbse(void*, int);
45 extern void cachedinvse(void*, int);
46 extern void cachedwbinvse(void*, int);
47 
48 extern void cachedwb(void);
49 extern void cachedinv(void);
50 extern void cachedwbinv(void);
51 
52 extern void l2cacheuwb(void);
53 extern void l2cacheuinv(void);
54 extern void l2cacheuwbinv(void);
55 
56 /* mmu */
57 #define getpgcolor(a) 0
58 extern uintptr paddr(void*);
59 #define PADDR(a) paddr((void*)(a))
60 extern uintptr cankaddr(uintptr);
61 extern void* kaddr(uintptr);
62 #define KADDR(a) kaddr(a)
63 extern void kmapinval(void);
64 #define VA(k) ((uintptr)(k))
65 extern KMap *kmap(Page*);
66 extern void kunmap(KMap*);
67 extern uintptr mmukmap(uintptr, uintptr, usize);
68 
69 extern void mmu0init(uintptr*);
70 extern void mmu0clear(uintptr*);
71 extern void mmu1init(void);
72 
73 extern void putasid(Proc*);
74 
75 /* clock */
76 extern void clockinit(void);
77 extern void synccycles(void);
78 extern void armtimerset(int);
79 
80 /* fpu */
81 extern void fpuinit(void);
82 extern void fpoff(void);
83 extern void fpinit(void);
84 extern void fpclear(void);
85 extern void fpsave(FPsave*);
86 extern void fprestore(FPsave*);
87 extern void mathtrap(Ureg*);
88 
89 /* trap */
90 extern void trapinit(void);
91 extern int userureg(Ureg*);
92 extern void evenaddr(uintptr);
93 extern void setkernur(Ureg*, Proc*);
94 extern void procfork(Proc*);
95 extern void procsetup(Proc*);
96 extern void procsave(Proc*);
97 extern void procrestore(Proc *);
98 extern void trap(Ureg*);
99 extern void syscall(Ureg*);
100 extern void noted(Ureg*, ulong);
101 extern void faultarm64(Ureg*);
102 extern void dumpstack(void);
103 extern void dumpregs(Ureg*);
104 
105 /* irq */
106 extern void intrcpushutdown(void);
107 extern void intrsoff(void);
108 #define intrenable(i, f, a, b, n) irqenable((i), (f), (a))
109 extern void irqenable(int, void (*)(Ureg*, void*), void*);
110 extern int irq(Ureg*);
111 extern void fiq(Ureg*);
112 
113 /* sysreg */
114 extern uvlong sysrd(ulong);
115 extern void syswr(ulong, uvlong);
116 
117 /* gpio */
118 extern void gpiosel(uint, int);
119 extern void gpiopull(uint, int);
120 extern void gpiopullup(uint);
121 extern void gpiopulloff(uint);
122 extern void gpiopulldown(uint);
123 extern void gpioout(uint, int);
124 extern int gpioin(uint);
125 extern void gpioselevent(uint, int, int);
126 extern int gpiogetevent(uint);
127 extern void gpiomeminit(void);
128 
129 /* arch */
130 extern char *cputype2name(char*, int);
131 extern void cpuidprint(void);
132 extern void uartconsinit(void);
133 extern void links(void);
134 extern int getncpus(void);
135 extern int startcpu(uint);
136 extern void okay(int);
137 
138 /* dma */
139 extern uintptr dmaaddr(void*);
140 extern void dmastart(int, int, int, void*, void*, int);
141 extern int dmawait(int);
142 
143 /* vcore */
144 extern void* fbinit(int set, int *width, int *height, int *depth);
145 extern int fbblank(int blank);
146 extern void setpower(int dev, int on);
147 extern int getpower(int dev);
148 extern char* getethermac(void);
149 extern uint getboardrev(void);
150 extern uint getfirmware(void);
151 extern void getramsize(Confmem *mem);
152 extern ulong getclkrate(int clkid);
153 extern void setclkrate(int clkid, ulong hz);
154 extern uint getcputemp(void);
155 extern void vgpinit(void);
156 extern void vgpset(uint port, int on);
157 
158 /* bootargs */
159 extern void bootargsinit(void);
160 extern char *getconf(char *name);
161 extern void setconfenv(void);
162 extern void writeconf(void);
163 
164 /* screen */
165 extern void screeninit(void);
166 
167 extern int isaconfig(char*, int, ISAConf*);