changelog shortlog tags branches changeset files file revisions raw help

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

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