fns.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #include "../port/portfns.h"
  2. Dirtab* addarchfile(char*, int, long(*)(Chan*, void*, long, vlong),
  3. long(*)(Chan*, void*, long, vlong));
  4. extern void archreboot(void);
  5. extern void archreset(void);
  6. extern void armtimerset(int);
  7. extern void cachedwbinv(void);
  8. extern void cachedwbse(void*, int);
  9. extern void cachedwbinvse(void*, int);
  10. extern void cacheiinv(void);
  11. extern void cacheuwbinv(void);
  12. extern uintptr cankaddr(uintptr pa);
  13. extern int cas32(void*, u32int, u32int);
  14. extern void checkmmu(uintptr, uintptr);
  15. extern void clockinit(void);
  16. extern void clockshutdown(void);
  17. extern int cmpswap(long*, long, long);
  18. extern void coherence(void);
  19. extern ulong cprd(int cp, int op1, int crn, int crm, int op2);
  20. extern ulong cprdsc(int op1, int crn, int crm, int op2);
  21. extern void cpuidprint(void);
  22. extern void cpwr(int cp, int op1, int crn, int crm, int op2, ulong val);
  23. extern void cpwrsc(int op1, int crn, int crm, int op2, ulong val);
  24. #define cycles(ip) *(ip) = lcycles()
  25. extern void dmastart(int, int, int, void*, void*, int);
  26. extern int dmawait(int);
  27. extern int fbblank(int);
  28. extern void* fbinit(int, int*, int*, int*);
  29. extern u32int farget(void);
  30. extern void fpon(void);
  31. extern ulong fprd(int fpreg);
  32. extern void fprestreg(int fpreg, uvlong val);
  33. extern void fpsave(FPsave *);
  34. extern ulong fpsavereg(int fpreg, uvlong *fpp);
  35. extern void fpwr(int fpreg, ulong val);
  36. extern u32int fsrget(void);
  37. extern ulong getclkrate(int);
  38. extern char* getconf(char*);
  39. extern char *getethermac(void);
  40. extern uint getfirmware(void);
  41. extern int getpower(int);
  42. extern void getramsize(Confmem*);
  43. extern u32int ifsrget(void);
  44. extern void irqenable(int, void (*)(Ureg*, void*), void*);
  45. #define intrenable(i, f, a, b, n) irqenable((i), (f), (a))
  46. extern void intrsoff(void);
  47. extern int isaconfig(char*, int, ISAConf*);
  48. extern void links(void);
  49. extern void mmuinit(void);
  50. extern void mmuinit1(void);
  51. extern void mmuinvalidate(void);
  52. extern void mmuinvalidateaddr(u32int);
  53. extern uintptr mmukmap(uintptr, uintptr, usize);
  54. extern void okay(int);
  55. extern void procrestore(Proc *);
  56. extern void procsave(Proc*);
  57. extern void procsetup(Proc*);
  58. extern void screeninit(void);
  59. #define sdfree(p) free(p)
  60. #define sdmalloc(n) mallocalign(n, CACHELINESZ, 0, 0)
  61. extern void setpower(int, int);
  62. extern void setr13(int, u32int*);
  63. extern int splfhi(void);
  64. extern int splflo(void);
  65. extern void swcursorinit(void);
  66. extern void syscallfmt(int syscallno, ulong pc, va_list list);
  67. extern void sysretfmt(int syscallno, va_list list, long ret, uvlong start, uvlong stop);
  68. extern int tas(void *);
  69. extern void touser(uintptr);
  70. extern void trapinit(void);
  71. extern void uartconsinit(void);
  72. extern int userureg(Ureg*);
  73. extern void vectors(void);
  74. extern void vtable(void);
  75. extern void wdogoff(void);
  76. /*
  77. * floating point emulation
  78. */
  79. extern int fpiarm(Ureg*);
  80. extern int fpudevprocio(Proc*, void*, long, uintptr, int);
  81. extern void fpuinit(void);
  82. extern void fpunoted(void);
  83. extern void fpunotify(Ureg*);
  84. extern void fpuprocrestore(Proc*);
  85. extern void fpuprocsave(Proc*);
  86. extern void fpusysprocsetup(Proc*);
  87. extern void fpusysrfork(Ureg*);
  88. extern void fpusysrforkchild(Proc*, Ureg*, Proc*);
  89. extern int fpuemu(Ureg*);
  90. /*
  91. * Things called from port.
  92. */
  93. extern void delay(int); /* only scheddump() */
  94. extern int islo(void);
  95. extern void microdelay(int); /* only edf.c */
  96. extern void evenaddr(uintptr);
  97. extern void idlehands(void);
  98. extern void setkernur(Ureg*, Proc*); /* only devproc.c */
  99. extern void* sysexecregs(uintptr, ulong, int);
  100. extern void sysprocsetup(Proc*);
  101. extern void kexit(Ureg*);
  102. #define getpgcolor(a) 0
  103. #define kmapinval()
  104. #define countpagerefs(a, b)
  105. #define PTR2UINT(p) ((uintptr)(p))
  106. #define UINT2PTR(i) ((void*)(i))
  107. #define waserror() (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
  108. #define KADDR(pa) UINT2PTR(KZERO | ((uintptr)(pa) & ~KSEGM))
  109. #define PADDR(va) PTR2UINT(PHYSDRAM | ((uintptr)(va) & ~KSEGM))
  110. #define DMAADDR(va) PTR2UINT(BUSDRAM | ((uintptr)(va) & ~KSEGM))
  111. #define DMAIO(va) PTR2UINT(BUSIO | ((uintptr)(va) & ~VIRTIO))
  112. #define MASK(v) ((1UL << (v)) - 1) /* mask `v' bits wide */