v86 0.3.4 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (369) hide show
  1. package/Readme.md +4 -4
  2. package/bios/seabios/.config +113 -0
  3. package/bios/seabios/.config.old +114 -0
  4. package/bios/seabios/.gitignore +4 -0
  5. package/bios/seabios/COPYING +674 -0
  6. package/bios/seabios/COPYING.LESSER +165 -0
  7. package/bios/seabios/Makefile +286 -0
  8. package/bios/seabios/README +17 -0
  9. package/bios/seabios/docs/Build_overview.md +104 -0
  10. package/bios/seabios/docs/Contributing.md +20 -0
  11. package/bios/seabios/docs/Debugging.md +111 -0
  12. package/bios/seabios/docs/Developer_Documentation.md +25 -0
  13. package/bios/seabios/docs/Developer_links.md +86 -0
  14. package/bios/seabios/docs/Download.md +27 -0
  15. package/bios/seabios/docs/Execution_and_code_flow.md +178 -0
  16. package/bios/seabios/docs/Linking_overview.md +160 -0
  17. package/bios/seabios/docs/Mailinglist.md +8 -0
  18. package/bios/seabios/docs/Memory_Model.md +253 -0
  19. package/bios/seabios/docs/README +5 -0
  20. package/bios/seabios/docs/Releases.md +482 -0
  21. package/bios/seabios/docs/Runtime_config.md +193 -0
  22. package/bios/seabios/docs/SeaBIOS.md +17 -0
  23. package/bios/seabios/docs/SeaVGABIOS.md +39 -0
  24. package/bios/seabios/out/autoconf.h +117 -0
  25. package/bios/seabios/out/include/config/acpi/dsdt.h +0 -0
  26. package/bios/seabios/out/include/config/acpi.h +0 -0
  27. package/bios/seabios/out/include/config/ahci.h +0 -0
  28. package/bios/seabios/out/include/config/apmbios.h +0 -0
  29. package/bios/seabios/out/include/config/ata/dma.h +0 -0
  30. package/bios/seabios/out/include/config/ata/pio32.h +0 -0
  31. package/bios/seabios/out/include/config/ata.h +0 -0
  32. package/bios/seabios/out/include/config/auto.conf +69 -0
  33. package/bios/seabios/out/include/config/auto.conf.cmd +9 -0
  34. package/bios/seabios/out/include/config/boot.h +0 -0
  35. package/bios/seabios/out/include/config/bootorder.h +0 -0
  36. package/bios/seabios/out/include/config/build/vgabios.h +0 -0
  37. package/bios/seabios/out/include/config/call32/smm.h +0 -0
  38. package/bios/seabios/out/include/config/cdrom/boot.h +0 -0
  39. package/bios/seabios/out/include/config/cdrom/emu.h +0 -0
  40. package/bios/seabios/out/include/config/debug/level.h +0 -0
  41. package/bios/seabios/out/include/config/drives.h +0 -0
  42. package/bios/seabios/out/include/config/entry/extrastack.h +0 -0
  43. package/bios/seabios/out/include/config/esp/scsi.h +0 -0
  44. package/bios/seabios/out/include/config/flash/floppy.h +0 -0
  45. package/bios/seabios/out/include/config/floppy.h +0 -0
  46. package/bios/seabios/out/include/config/fw/romfile/load.h +0 -0
  47. package/bios/seabios/out/include/config/hardware/irq.h +0 -0
  48. package/bios/seabios/out/include/config/kbd/call/int15/4f.h +0 -0
  49. package/bios/seabios/out/include/config/keyboard.h +0 -0
  50. package/bios/seabios/out/include/config/lpt.h +0 -0
  51. package/bios/seabios/out/include/config/lsi/scsi.h +0 -0
  52. package/bios/seabios/out/include/config/malloc/uppermemory.h +0 -0
  53. package/bios/seabios/out/include/config/megasas.h +0 -0
  54. package/bios/seabios/out/include/config/mouse.h +0 -0
  55. package/bios/seabios/out/include/config/mpt/scsi.h +0 -0
  56. package/bios/seabios/out/include/config/mptable.h +0 -0
  57. package/bios/seabios/out/include/config/mtrr/init.h +0 -0
  58. package/bios/seabios/out/include/config/optionroms.h +0 -0
  59. package/bios/seabios/out/include/config/override/pci/id.h +0 -0
  60. package/bios/seabios/out/include/config/pcibios.h +0 -0
  61. package/bios/seabios/out/include/config/pirtable.h +0 -0
  62. package/bios/seabios/out/include/config/pmm.h +0 -0
  63. package/bios/seabios/out/include/config/pmtimer.h +0 -0
  64. package/bios/seabios/out/include/config/pnpbios.h +0 -0
  65. package/bios/seabios/out/include/config/ps2port.h +0 -0
  66. package/bios/seabios/out/include/config/pvscsi.h +0 -0
  67. package/bios/seabios/out/include/config/qemu/hardware.h +0 -0
  68. package/bios/seabios/out/include/config/qemu.h +0 -0
  69. package/bios/seabios/out/include/config/rom/size.h +0 -0
  70. package/bios/seabios/out/include/config/rtc/timer.h +0 -0
  71. package/bios/seabios/out/include/config/s3/resume.h +0 -0
  72. package/bios/seabios/out/include/config/sdcard.h +0 -0
  73. package/bios/seabios/out/include/config/serial.h +0 -0
  74. package/bios/seabios/out/include/config/tcgbios.h +0 -0
  75. package/bios/seabios/out/include/config/threads.h +0 -0
  76. package/bios/seabios/out/include/config/tristate.conf +4 -0
  77. package/bios/seabios/out/include/config/tsc/timer.h +0 -0
  78. package/bios/seabios/out/include/config/use/smm.h +0 -0
  79. package/bios/seabios/out/include/config/vga/allocate/extra/stack.h +0 -0
  80. package/bios/seabios/out/include/config/vga/bochs/stdvga.h +0 -0
  81. package/bios/seabios/out/include/config/vga/bochs.h +0 -0
  82. package/bios/seabios/out/include/config/vga/did.h +0 -0
  83. package/bios/seabios/out/include/config/vga/extra/stack/size.h +0 -0
  84. package/bios/seabios/out/include/config/vga/fixup/asm.h +0 -0
  85. package/bios/seabios/out/include/config/vga/pci.h +0 -0
  86. package/bios/seabios/out/include/config/vga/stdvga/ports.h +0 -0
  87. package/bios/seabios/out/include/config/vga/vbe.h +0 -0
  88. package/bios/seabios/out/include/config/vga/vid.h +0 -0
  89. package/bios/seabios/out/include/config/vgahooks.h +0 -0
  90. package/bios/seabios/out/include/config/virtio/blk.h +0 -0
  91. package/bios/seabios/out/include/config/virtio/scsi.h +0 -0
  92. package/bios/seabios/out/include/config/xen.h +0 -0
  93. package/bios/seabios/out/scripts/kconfig/conf +0 -0
  94. package/bios/seabios/out/scripts/kconfig/conf.o +0 -0
  95. package/bios/seabios/out/scripts/kconfig/zconf.hash.c +289 -0
  96. package/bios/seabios/out/scripts/kconfig/zconf.lex.c +2420 -0
  97. package/bios/seabios/out/scripts/kconfig/zconf.tab.c +2538 -0
  98. package/bios/seabios/out/scripts/kconfig/zconf.tab.o +0 -0
  99. package/bios/seabios/scripts/acpi_extract.py +366 -0
  100. package/bios/seabios/scripts/acpi_extract_preprocess.py +41 -0
  101. package/bios/seabios/scripts/buildrom.py +56 -0
  102. package/bios/seabios/scripts/buildversion.py +134 -0
  103. package/bios/seabios/scripts/checkrom.py +95 -0
  104. package/bios/seabios/scripts/checkstack.py +226 -0
  105. package/bios/seabios/scripts/checksum.py +16 -0
  106. package/bios/seabios/scripts/encodeint.py +21 -0
  107. package/bios/seabios/scripts/gen-offsets.sh +17 -0
  108. package/bios/seabios/scripts/kconfig/.gitignore +22 -0
  109. package/bios/seabios/scripts/kconfig/Makefile +331 -0
  110. package/bios/seabios/scripts/kconfig/POTFILES.in +12 -0
  111. package/bios/seabios/scripts/kconfig/check.sh +13 -0
  112. package/bios/seabios/scripts/kconfig/conf.c +718 -0
  113. package/bios/seabios/scripts/kconfig/confdata.c +1250 -0
  114. package/bios/seabios/scripts/kconfig/expr.c +1168 -0
  115. package/bios/seabios/scripts/kconfig/expr.h +241 -0
  116. package/bios/seabios/scripts/kconfig/gconf.c +1542 -0
  117. package/bios/seabios/scripts/kconfig/gconf.glade +661 -0
  118. package/bios/seabios/scripts/kconfig/images.c +326 -0
  119. package/bios/seabios/scripts/kconfig/kxgettext.c +235 -0
  120. package/bios/seabios/scripts/kconfig/lex.zconf.c +2430 -0
  121. package/bios/seabios/scripts/kconfig/list.h +131 -0
  122. package/bios/seabios/scripts/kconfig/lkc.h +200 -0
  123. package/bios/seabios/scripts/kconfig/lkc_proto.h +57 -0
  124. package/bios/seabios/scripts/kconfig/lxdialog/.gitignore +4 -0
  125. package/bios/seabios/scripts/kconfig/lxdialog/BIG.FAT.WARNING +4 -0
  126. package/bios/seabios/scripts/kconfig/lxdialog/check-lxdialog.sh +87 -0
  127. package/bios/seabios/scripts/kconfig/lxdialog/checklist.c +332 -0
  128. package/bios/seabios/scripts/kconfig/lxdialog/dialog.h +257 -0
  129. package/bios/seabios/scripts/kconfig/lxdialog/inputbox.c +301 -0
  130. package/bios/seabios/scripts/kconfig/lxdialog/menubox.c +437 -0
  131. package/bios/seabios/scripts/kconfig/lxdialog/textbox.c +408 -0
  132. package/bios/seabios/scripts/kconfig/lxdialog/util.c +713 -0
  133. package/bios/seabios/scripts/kconfig/lxdialog/yesno.c +114 -0
  134. package/bios/seabios/scripts/kconfig/mconf.c +1036 -0
  135. package/bios/seabios/scripts/kconfig/menu.c +697 -0
  136. package/bios/seabios/scripts/kconfig/merge_config.sh +150 -0
  137. package/bios/seabios/scripts/kconfig/nconf.c +1556 -0
  138. package/bios/seabios/scripts/kconfig/nconf.gui.c +656 -0
  139. package/bios/seabios/scripts/kconfig/nconf.h +96 -0
  140. package/bios/seabios/scripts/kconfig/qconf.cc +1795 -0
  141. package/bios/seabios/scripts/kconfig/qconf.h +338 -0
  142. package/bios/seabios/scripts/kconfig/streamline_config.pl +647 -0
  143. package/bios/seabios/scripts/kconfig/symbol.c +1373 -0
  144. package/bios/seabios/scripts/kconfig/util.c +157 -0
  145. package/bios/seabios/scripts/kconfig/zconf.gperf +48 -0
  146. package/bios/seabios/scripts/kconfig/zconf.hash.c_shipped +289 -0
  147. package/bios/seabios/scripts/kconfig/zconf.l +363 -0
  148. package/bios/seabios/scripts/kconfig/zconf.lex.c_shipped +2420 -0
  149. package/bios/seabios/scripts/kconfig/zconf.tab.c_shipped +2538 -0
  150. package/bios/seabios/scripts/kconfig/zconf.y +733 -0
  151. package/bios/seabios/scripts/layoutrom.py +705 -0
  152. package/bios/seabios/scripts/python23compat.py +14 -0
  153. package/bios/seabios/scripts/readserial.py +190 -0
  154. package/bios/seabios/scripts/tarball.sh +36 -0
  155. package/bios/seabios/scripts/test-build.sh +90 -0
  156. package/bios/seabios/scripts/transdump.py +53 -0
  157. package/bios/seabios/scripts/vgafixup.py +96 -0
  158. package/bios/seabios/src/Kconfig +579 -0
  159. package/bios/seabios/src/apm.c +215 -0
  160. package/bios/seabios/src/asm-offsets.c +23 -0
  161. package/bios/seabios/src/biosvar.h +130 -0
  162. package/bios/seabios/src/block.c +623 -0
  163. package/bios/seabios/src/block.h +121 -0
  164. package/bios/seabios/src/bmp.c +117 -0
  165. package/bios/seabios/src/boot.c +793 -0
  166. package/bios/seabios/src/bootsplash.c +255 -0
  167. package/bios/seabios/src/bregs.h +80 -0
  168. package/bios/seabios/src/byteorder.h +71 -0
  169. package/bios/seabios/src/cdrom.c +322 -0
  170. package/bios/seabios/src/clock.c +506 -0
  171. package/bios/seabios/src/code16gcc.s +1 -0
  172. package/bios/seabios/src/config.h +108 -0
  173. package/bios/seabios/src/cp437.c +275 -0
  174. package/bios/seabios/src/cp437.h +1 -0
  175. package/bios/seabios/src/disk.c +779 -0
  176. package/bios/seabios/src/e820map.c +152 -0
  177. package/bios/seabios/src/e820map.h +26 -0
  178. package/bios/seabios/src/entryfuncs.S +165 -0
  179. package/bios/seabios/src/farptr.h +208 -0
  180. package/bios/seabios/src/font.c +139 -0
  181. package/bios/seabios/src/fw/acpi-dsdt-cpu-hotplug.dsl +78 -0
  182. package/bios/seabios/src/fw/acpi-dsdt-dbug.dsl +26 -0
  183. package/bios/seabios/src/fw/acpi-dsdt-hpet.dsl +36 -0
  184. package/bios/seabios/src/fw/acpi-dsdt-isa.dsl +102 -0
  185. package/bios/seabios/src/fw/acpi-dsdt-pci-crs.dsl +90 -0
  186. package/bios/seabios/src/fw/acpi-dsdt.dsl +342 -0
  187. package/bios/seabios/src/fw/acpi-dsdt.hex +554 -0
  188. package/bios/seabios/src/fw/acpi.c +685 -0
  189. package/bios/seabios/src/fw/biostables.c +491 -0
  190. package/bios/seabios/src/fw/coreboot.c +569 -0
  191. package/bios/seabios/src/fw/csm.c +347 -0
  192. package/bios/seabios/src/fw/dev-pci.h +52 -0
  193. package/bios/seabios/src/fw/dev-piix.h +29 -0
  194. package/bios/seabios/src/fw/dev-q35.h +52 -0
  195. package/bios/seabios/src/fw/lzmadecode.c +398 -0
  196. package/bios/seabios/src/fw/lzmadecode.h +67 -0
  197. package/bios/seabios/src/fw/mptable.c +197 -0
  198. package/bios/seabios/src/fw/mtrr.c +105 -0
  199. package/bios/seabios/src/fw/multiboot.c +111 -0
  200. package/bios/seabios/src/fw/paravirt.c +624 -0
  201. package/bios/seabios/src/fw/paravirt.h +63 -0
  202. package/bios/seabios/src/fw/pciinit.c +1187 -0
  203. package/bios/seabios/src/fw/pirtable.c +103 -0
  204. package/bios/seabios/src/fw/q35-acpi-dsdt.dsl +450 -0
  205. package/bios/seabios/src/fw/romfile_loader.c +259 -0
  206. package/bios/seabios/src/fw/romfile_loader.h +91 -0
  207. package/bios/seabios/src/fw/shadow.c +208 -0
  208. package/bios/seabios/src/fw/smbios.c +585 -0
  209. package/bios/seabios/src/fw/smm.c +269 -0
  210. package/bios/seabios/src/fw/smp.c +194 -0
  211. package/bios/seabios/src/fw/ssdt-misc.dsl +104 -0
  212. package/bios/seabios/src/fw/ssdt-misc.hex +88 -0
  213. package/bios/seabios/src/fw/ssdt-pcihp.dsl +36 -0
  214. package/bios/seabios/src/fw/ssdt-pcihp.hex +38 -0
  215. package/bios/seabios/src/fw/ssdt-proc.dsl +48 -0
  216. package/bios/seabios/src/fw/ssdt-proc.hex +35 -0
  217. package/bios/seabios/src/fw/xen.c +149 -0
  218. package/bios/seabios/src/fw/xen.h +125 -0
  219. package/bios/seabios/src/gen-defs.h +19 -0
  220. package/bios/seabios/src/hw/ahci.c +697 -0
  221. package/bios/seabios/src/hw/ahci.h +201 -0
  222. package/bios/seabios/src/hw/ata.c +1046 -0
  223. package/bios/seabios/src/hw/ata.h +163 -0
  224. package/bios/seabios/src/hw/blockcmd.c +372 -0
  225. package/bios/seabios/src/hw/blockcmd.h +114 -0
  226. package/bios/seabios/src/hw/dma.c +67 -0
  227. package/bios/seabios/src/hw/esp-scsi.c +241 -0
  228. package/bios/seabios/src/hw/esp-scsi.h +8 -0
  229. package/bios/seabios/src/hw/floppy.c +741 -0
  230. package/bios/seabios/src/hw/lsi-scsi.c +221 -0
  231. package/bios/seabios/src/hw/lsi-scsi.h +8 -0
  232. package/bios/seabios/src/hw/megasas.c +405 -0
  233. package/bios/seabios/src/hw/megasas.h +8 -0
  234. package/bios/seabios/src/hw/mpt-scsi.c +319 -0
  235. package/bios/seabios/src/hw/mpt-scsi.h +8 -0
  236. package/bios/seabios/src/hw/nvme-int.h +199 -0
  237. package/bios/seabios/src/hw/nvme.c +708 -0
  238. package/bios/seabios/src/hw/nvme.h +17 -0
  239. package/bios/seabios/src/hw/pci.c +133 -0
  240. package/bios/seabios/src/hw/pci.h +47 -0
  241. package/bios/seabios/src/hw/pci_ids.h +2632 -0
  242. package/bios/seabios/src/hw/pci_regs.h +556 -0
  243. package/bios/seabios/src/hw/pcidevice.c +192 -0
  244. package/bios/seabios/src/hw/pcidevice.h +76 -0
  245. package/bios/seabios/src/hw/pic.c +115 -0
  246. package/bios/seabios/src/hw/pic.h +60 -0
  247. package/bios/seabios/src/hw/ps2port.c +543 -0
  248. package/bios/seabios/src/hw/ps2port.h +67 -0
  249. package/bios/seabios/src/hw/pvscsi.c +333 -0
  250. package/bios/seabios/src/hw/pvscsi.h +8 -0
  251. package/bios/seabios/src/hw/ramdisk.c +108 -0
  252. package/bios/seabios/src/hw/rtc.c +100 -0
  253. package/bios/seabios/src/hw/rtc.h +75 -0
  254. package/bios/seabios/src/hw/sdcard.c +572 -0
  255. package/bios/seabios/src/hw/serialio.c +113 -0
  256. package/bios/seabios/src/hw/serialio.h +29 -0
  257. package/bios/seabios/src/hw/timer.c +259 -0
  258. package/bios/seabios/src/hw/tpm_drivers.c +636 -0
  259. package/bios/seabios/src/hw/tpm_drivers.h +127 -0
  260. package/bios/seabios/src/hw/usb-ehci.c +650 -0
  261. package/bios/seabios/src/hw/usb-ehci.h +177 -0
  262. package/bios/seabios/src/hw/usb-hid.c +442 -0
  263. package/bios/seabios/src/hw/usb-hid.h +29 -0
  264. package/bios/seabios/src/hw/usb-hub.c +205 -0
  265. package/bios/seabios/src/hw/usb-hub.h +64 -0
  266. package/bios/seabios/src/hw/usb-msc.c +222 -0
  267. package/bios/seabios/src/hw/usb-msc.h +10 -0
  268. package/bios/seabios/src/hw/usb-ohci.c +568 -0
  269. package/bios/seabios/src/hw/usb-ohci.h +144 -0
  270. package/bios/seabios/src/hw/usb-uas.c +289 -0
  271. package/bios/seabios/src/hw/usb-uas.h +9 -0
  272. package/bios/seabios/src/hw/usb-uhci.c +571 -0
  273. package/bios/seabios/src/hw/usb-uhci.h +128 -0
  274. package/bios/seabios/src/hw/usb-xhci.c +1161 -0
  275. package/bios/seabios/src/hw/usb-xhci.h +133 -0
  276. package/bios/seabios/src/hw/usb.c +499 -0
  277. package/bios/seabios/src/hw/usb.h +254 -0
  278. package/bios/seabios/src/hw/virtio-blk.c +211 -0
  279. package/bios/seabios/src/hw/virtio-blk.h +43 -0
  280. package/bios/seabios/src/hw/virtio-pci.c +501 -0
  281. package/bios/seabios/src/hw/virtio-pci.h +151 -0
  282. package/bios/seabios/src/hw/virtio-ring.c +147 -0
  283. package/bios/seabios/src/hw/virtio-ring.h +121 -0
  284. package/bios/seabios/src/hw/virtio-scsi.c +220 -0
  285. package/bios/seabios/src/hw/virtio-scsi.h +47 -0
  286. package/bios/seabios/src/jpeg.c +1055 -0
  287. package/bios/seabios/src/kbd.c +599 -0
  288. package/bios/seabios/src/list.h +91 -0
  289. package/bios/seabios/src/malloc.c +561 -0
  290. package/bios/seabios/src/malloc.h +70 -0
  291. package/bios/seabios/src/memmap.h +21 -0
  292. package/bios/seabios/src/misc.c +195 -0
  293. package/bios/seabios/src/mouse.c +342 -0
  294. package/bios/seabios/src/optionroms.c +475 -0
  295. package/bios/seabios/src/output.c +584 -0
  296. package/bios/seabios/src/output.h +68 -0
  297. package/bios/seabios/src/pcibios.c +241 -0
  298. package/bios/seabios/src/pmm.c +176 -0
  299. package/bios/seabios/src/pnpbios.c +88 -0
  300. package/bios/seabios/src/post.c +337 -0
  301. package/bios/seabios/src/resume.c +157 -0
  302. package/bios/seabios/src/romfile.c +146 -0
  303. package/bios/seabios/src/romfile.h +21 -0
  304. package/bios/seabios/src/romlayout.S +698 -0
  305. package/bios/seabios/src/sercon.c +677 -0
  306. package/bios/seabios/src/serial.c +317 -0
  307. package/bios/seabios/src/sha1.c +147 -0
  308. package/bios/seabios/src/sha1.h +8 -0
  309. package/bios/seabios/src/stacks.c +771 -0
  310. package/bios/seabios/src/stacks.h +68 -0
  311. package/bios/seabios/src/std/LegacyBios.h +985 -0
  312. package/bios/seabios/src/std/acpi.h +323 -0
  313. package/bios/seabios/src/std/bda.h +174 -0
  314. package/bios/seabios/src/std/disk.h +175 -0
  315. package/bios/seabios/src/std/mptable.h +77 -0
  316. package/bios/seabios/src/std/multiboot.h +260 -0
  317. package/bios/seabios/src/std/optionrom.h +59 -0
  318. package/bios/seabios/src/std/pirtable.h +35 -0
  319. package/bios/seabios/src/std/pmm.h +19 -0
  320. package/bios/seabios/src/std/pnpbios.h +24 -0
  321. package/bios/seabios/src/std/smbios.h +167 -0
  322. package/bios/seabios/src/std/tcg.h +554 -0
  323. package/bios/seabios/src/std/vbe.h +156 -0
  324. package/bios/seabios/src/std/vga.h +63 -0
  325. package/bios/seabios/src/string.c +251 -0
  326. package/bios/seabios/src/string.h +31 -0
  327. package/bios/seabios/src/system.c +357 -0
  328. package/bios/seabios/src/tcgbios.c +2014 -0
  329. package/bios/seabios/src/tcgbios.h +19 -0
  330. package/bios/seabios/src/types.h +156 -0
  331. package/bios/seabios/src/util.h +251 -0
  332. package/bios/seabios/src/version.c +5 -0
  333. package/bios/seabios/src/vgahooks.c +355 -0
  334. package/bios/seabios/src/x86.c +23 -0
  335. package/bios/seabios/src/x86.h +277 -0
  336. package/bios/seabios/vgasrc/Kconfig +211 -0
  337. package/bios/seabios/vgasrc/bochsdisplay.c +59 -0
  338. package/bios/seabios/vgasrc/bochsvga.c +447 -0
  339. package/bios/seabios/vgasrc/bochsvga.h +57 -0
  340. package/bios/seabios/vgasrc/cbvga.c +337 -0
  341. package/bios/seabios/vgasrc/clext.c +627 -0
  342. package/bios/seabios/vgasrc/geodevga.c +434 -0
  343. package/bios/seabios/vgasrc/geodevga.h +89 -0
  344. package/bios/seabios/vgasrc/ramfb.c +163 -0
  345. package/bios/seabios/vgasrc/stdvga.c +485 -0
  346. package/bios/seabios/vgasrc/stdvga.h +81 -0
  347. package/bios/seabios/vgasrc/stdvgaio.c +186 -0
  348. package/bios/seabios/vgasrc/stdvgamodes.c +534 -0
  349. package/bios/seabios/vgasrc/swcursor.c +96 -0
  350. package/bios/seabios/vgasrc/vbe.c +432 -0
  351. package/bios/seabios/vgasrc/vgabios.c +1131 -0
  352. package/bios/seabios/vgasrc/vgabios.h +88 -0
  353. package/bios/seabios/vgasrc/vgaentry.S +161 -0
  354. package/bios/seabios/vgasrc/vgafb.c +661 -0
  355. package/bios/seabios/vgasrc/vgafb.h +42 -0
  356. package/bios/seabios/vgasrc/vgafonts.c +785 -0
  357. package/bios/seabios/vgasrc/vgahw.h +152 -0
  358. package/bios/seabios/vgasrc/vgainit.c +202 -0
  359. package/bios/seabios/vgasrc/vgalayout.lds.S +23 -0
  360. package/bios/seabios/vgasrc/vgautil.h +103 -0
  361. package/bios/seabios/vgasrc/vgaversion.c +6 -0
  362. package/build/binaries.js +1 -1
  363. package/build/index-debug.cjs +1 -1
  364. package/build/index-debug.js +1 -1
  365. package/build/index.cjs +1 -1
  366. package/build/index.js +1 -1
  367. package/build/v86-debug.wasm +0 -0
  368. package/build/v86.wasm +0 -0
  369. package/package.json +1 -1
@@ -0,0 +1,192 @@
1
+ // Code to maintain and access the pci_device cache
2
+ //
3
+ // Copyright (C) 2008-2016 Kevin O'Connor <kevin@koconnor.net>
4
+ //
5
+ // This file may be distributed under the terms of the GNU LGPLv3 license.
6
+
7
+ #include "malloc.h" // malloc_tmp
8
+ #include "output.h" // dprintf
9
+ #include "pci.h" // pci_config_writel
10
+ #include "pcidevice.h" // pci_probe_devices
11
+ #include "pci_regs.h" // PCI_VENDOR_ID
12
+ #include "romfile.h" // romfile_loadint
13
+ #include "stacks.h" // wait_preempt
14
+ #include "string.h" // memset
15
+
16
+ struct hlist_head PCIDevices VARVERIFY32INIT;
17
+ int MaxPCIBus VARFSEG;
18
+
19
+ // Find all PCI devices and populate PCIDevices linked list.
20
+ void
21
+ pci_probe_devices(void)
22
+ {
23
+ dprintf(3, "PCI probe\n");
24
+ struct pci_device *busdevs[256];
25
+ memset(busdevs, 0, sizeof(busdevs));
26
+ struct hlist_node **pprev = &PCIDevices.first;
27
+ int extraroots = romfile_loadint("etc/extra-pci-roots", 0);
28
+ int bus = -1, lastbus = 0, rootbuses = 0, count=0;
29
+ while (bus < 0xff && (bus < MaxPCIBus || rootbuses < extraroots)) {
30
+ bus++;
31
+ int bdf;
32
+ foreachbdf(bdf, bus) {
33
+ // Create new pci_device struct and add to list.
34
+ struct pci_device *dev = malloc_tmp(sizeof(*dev));
35
+ if (!dev) {
36
+ warn_noalloc();
37
+ return;
38
+ }
39
+ memset(dev, 0, sizeof(*dev));
40
+ hlist_add(&dev->node, pprev);
41
+ pprev = &dev->node.next;
42
+ count++;
43
+
44
+ // Find parent device.
45
+ int rootbus;
46
+ struct pci_device *parent = busdevs[bus];
47
+ if (!parent) {
48
+ if (bus != lastbus)
49
+ rootbuses++;
50
+ lastbus = bus;
51
+ rootbus = rootbuses;
52
+ if (bus > MaxPCIBus)
53
+ MaxPCIBus = bus;
54
+ } else {
55
+ rootbus = parent->rootbus;
56
+ }
57
+
58
+ // Populate pci_device info.
59
+ dev->bdf = bdf;
60
+ dev->parent = parent;
61
+ dev->rootbus = rootbus;
62
+ u32 vendev = pci_config_readl(bdf, PCI_VENDOR_ID);
63
+ dev->vendor = vendev & 0xffff;
64
+ dev->device = vendev >> 16;
65
+ u32 classrev = pci_config_readl(bdf, PCI_CLASS_REVISION);
66
+ dev->class = classrev >> 16;
67
+ dev->prog_if = classrev >> 8;
68
+ dev->revision = classrev & 0xff;
69
+ dev->header_type = pci_config_readb(bdf, PCI_HEADER_TYPE);
70
+ u8 v = dev->header_type & 0x7f;
71
+ if (v == PCI_HEADER_TYPE_BRIDGE || v == PCI_HEADER_TYPE_CARDBUS) {
72
+ u8 secbus = pci_config_readb(bdf, PCI_SECONDARY_BUS);
73
+ dev->secondary_bus = secbus;
74
+ if (secbus > bus && !busdevs[secbus])
75
+ busdevs[secbus] = dev;
76
+ if (secbus > MaxPCIBus)
77
+ MaxPCIBus = secbus;
78
+ }
79
+ dprintf(4, "PCI device %pP (vd=%04x:%04x c=%04x)\n"
80
+ , dev, dev->vendor, dev->device, dev->class);
81
+ }
82
+ }
83
+ dprintf(1, "Found %d PCI devices (max PCI bus is %02x)\n", count, MaxPCIBus);
84
+ }
85
+
86
+ // Search for a device with the specified vendor and device ids.
87
+ struct pci_device *
88
+ pci_find_device(u16 vendid, u16 devid)
89
+ {
90
+ struct pci_device *pci;
91
+ foreachpci(pci) {
92
+ if (pci->vendor == vendid && pci->device == devid)
93
+ return pci;
94
+ }
95
+ return NULL;
96
+ }
97
+
98
+ // Search for a device with the specified class id.
99
+ struct pci_device *
100
+ pci_find_class(u16 classid)
101
+ {
102
+ struct pci_device *pci;
103
+ foreachpci(pci) {
104
+ if (pci->class == classid)
105
+ return pci;
106
+ }
107
+ return NULL;
108
+ }
109
+
110
+ int pci_init_device(const struct pci_device_id *ids
111
+ , struct pci_device *pci, void *arg)
112
+ {
113
+ while (ids->vendid || ids->class_mask) {
114
+ if ((ids->vendid == PCI_ANY_ID || ids->vendid == pci->vendor) &&
115
+ (ids->devid == PCI_ANY_ID || ids->devid == pci->device) &&
116
+ !((ids->class ^ pci->class) & ids->class_mask)) {
117
+ if (ids->func)
118
+ ids->func(pci, arg);
119
+ return 0;
120
+ }
121
+ ids++;
122
+ }
123
+ return -1;
124
+ }
125
+
126
+ struct pci_device *
127
+ pci_find_init_device(const struct pci_device_id *ids, void *arg)
128
+ {
129
+ struct pci_device *pci;
130
+ foreachpci(pci) {
131
+ if (pci_init_device(ids, pci, arg) == 0)
132
+ return pci;
133
+ }
134
+ return NULL;
135
+ }
136
+
137
+ // Enable PCI bus-mastering (ie, DMA) support on a pci device
138
+ void
139
+ pci_enable_busmaster(struct pci_device *pci)
140
+ {
141
+ wait_preempt();
142
+ pci_config_maskw(pci->bdf, PCI_COMMAND, 0, PCI_COMMAND_MASTER);
143
+ pci->have_driver = 1;
144
+ }
145
+
146
+ // Verify an IO bar and return it to the caller
147
+ u16
148
+ pci_enable_iobar(struct pci_device *pci, u32 addr)
149
+ {
150
+ wait_preempt();
151
+ u32 bar = pci_config_readl(pci->bdf, addr);
152
+ if (!(bar & PCI_BASE_ADDRESS_SPACE_IO)) {
153
+ warn_internalerror();
154
+ return 0;
155
+ }
156
+ bar &= PCI_BASE_ADDRESS_IO_MASK;
157
+ if (bar == 0 || bar > 0xffff) {
158
+ warn_internalerror();
159
+ return 0;
160
+ }
161
+ pci_config_maskw(pci->bdf, PCI_COMMAND, 0, PCI_COMMAND_IO);
162
+ pci->have_driver = 1;
163
+ return bar;
164
+ }
165
+
166
+ // Verify a memory bar and return it to the caller
167
+ void *
168
+ pci_enable_membar(struct pci_device *pci, u32 addr)
169
+ {
170
+ wait_preempt();
171
+ u32 bar = pci_config_readl(pci->bdf, addr);
172
+ if (bar & PCI_BASE_ADDRESS_SPACE_IO) {
173
+ warn_internalerror();
174
+ return NULL;
175
+ }
176
+ if (bar & PCI_BASE_ADDRESS_MEM_TYPE_64) {
177
+ u32 high = pci_config_readl(pci->bdf, addr+4);
178
+ if (high) {
179
+ dprintf(1, "Can not map memory bar over 4Gig\n");
180
+ return NULL;
181
+ }
182
+ }
183
+ bar &= PCI_BASE_ADDRESS_MEM_MASK;
184
+ if (bar + 4*1024*1024 < 20*1024*1024) {
185
+ // Bar doesn't look valid (it is in last 4M or first 16M)
186
+ warn_internalerror();
187
+ return NULL;
188
+ }
189
+ pci_config_maskw(pci->bdf, PCI_COMMAND, 0, PCI_COMMAND_MEMORY);
190
+ pci->have_driver = 1;
191
+ return (void*)bar;
192
+ }
@@ -0,0 +1,76 @@
1
+ #ifndef __PCIDEVICE_H
2
+ #define __PCIDEVICE_H
3
+
4
+ #include "types.h" // u32
5
+ #include "list.h" // hlist_node
6
+
7
+ struct pci_device {
8
+ u16 bdf;
9
+ u8 rootbus;
10
+ struct hlist_node node;
11
+ struct pci_device *parent;
12
+
13
+ // Configuration space device information
14
+ u16 vendor, device;
15
+ u16 class;
16
+ u8 prog_if, revision;
17
+ u8 header_type;
18
+ u8 secondary_bus;
19
+
20
+ // Local information on device.
21
+ int have_driver;
22
+ };
23
+ extern struct hlist_head PCIDevices;
24
+ extern int MaxPCIBus;
25
+
26
+ static inline u32 pci_classprog(struct pci_device *pci) {
27
+ return (pci->class << 8) | pci->prog_if;
28
+ }
29
+
30
+ #define foreachpci(PCI) \
31
+ hlist_for_each_entry(PCI, &PCIDevices, node)
32
+
33
+ #define PCI_ANY_ID (~0)
34
+ struct pci_device_id {
35
+ u32 vendid;
36
+ u32 devid;
37
+ u32 class;
38
+ u32 class_mask;
39
+ void (*func)(struct pci_device *pci, void *arg);
40
+ };
41
+
42
+ #define PCI_DEVICE(vendor_id, device_id, init_func) \
43
+ { \
44
+ .vendid = (vendor_id), \
45
+ .devid = (device_id), \
46
+ .class = PCI_ANY_ID, \
47
+ .class_mask = 0, \
48
+ .func = (init_func) \
49
+ }
50
+
51
+ #define PCI_DEVICE_CLASS(vendor_id, device_id, class_code, init_func) \
52
+ { \
53
+ .vendid = (vendor_id), \
54
+ .devid = (device_id), \
55
+ .class = (class_code), \
56
+ .class_mask = ~0, \
57
+ .func = (init_func) \
58
+ }
59
+
60
+ #define PCI_DEVICE_END \
61
+ { \
62
+ .vendid = 0, \
63
+ }
64
+
65
+ void pci_probe_devices(void);
66
+ struct pci_device *pci_find_device(u16 vendid, u16 devid);
67
+ struct pci_device *pci_find_class(u16 classid);
68
+ int pci_init_device(const struct pci_device_id *ids
69
+ , struct pci_device *pci, void *arg);
70
+ struct pci_device *pci_find_init_device(const struct pci_device_id *ids
71
+ , void *arg);
72
+ void pci_enable_busmaster(struct pci_device *pci);
73
+ u16 pci_enable_iobar(struct pci_device *pci, u32 addr);
74
+ void *pci_enable_membar(struct pci_device *pci, u32 addr);
75
+
76
+ #endif // pcidevice.h
@@ -0,0 +1,115 @@
1
+ // Helpers for working with i8259 interrupt controller.
2
+ //
3
+ // Copyright (C) 2008 Kevin O'Connor <kevin@koconnor.net>
4
+ // Copyright (C) 2002 MandrakeSoft S.A.
5
+ //
6
+ // This file may be distributed under the terms of the GNU LGPLv3 license.
7
+
8
+ #include "biosvar.h" // SET_IVT
9
+ #include "config.h" // CONFIG_*
10
+ #include "output.h" // dprintf
11
+ #include "pic.h" // pic_*
12
+
13
+ u16
14
+ pic_irqmask_read(void)
15
+ {
16
+ if (!CONFIG_HARDWARE_IRQ)
17
+ return 0;
18
+ return inb(PORT_PIC1_DATA) | (inb(PORT_PIC2_DATA) << 8);
19
+ }
20
+
21
+ void
22
+ pic_irqmask_write(u16 mask)
23
+ {
24
+ if (!CONFIG_HARDWARE_IRQ)
25
+ return;
26
+ outb(mask, PORT_PIC1_DATA);
27
+ outb(mask >> 8, PORT_PIC2_DATA);
28
+ }
29
+
30
+ void
31
+ pic_irqmask_mask(u16 off, u16 on)
32
+ {
33
+ if (!CONFIG_HARDWARE_IRQ)
34
+ return;
35
+ u8 pic1off = off, pic1on = on, pic2off = off>>8, pic2on = on>>8;
36
+ outb((inb(PORT_PIC1_DATA) & ~pic1off) | pic1on, PORT_PIC1_DATA);
37
+ outb((inb(PORT_PIC2_DATA) & ~pic2off) | pic2on, PORT_PIC2_DATA);
38
+ }
39
+
40
+ void
41
+ pic_reset(u8 irq0, u8 irq8)
42
+ {
43
+ if (!CONFIG_HARDWARE_IRQ)
44
+ return;
45
+ // Send ICW1 (select OCW1 + will send ICW4)
46
+ outb(0x11, PORT_PIC1_CMD);
47
+ outb(0x11, PORT_PIC2_CMD);
48
+ // Send ICW2 (base irqs: 0x08-0x0f for irq0-7, 0x70-0x77 for irq8-15)
49
+ outb(irq0, PORT_PIC1_DATA);
50
+ outb(irq8, PORT_PIC2_DATA);
51
+ // Send ICW3 (cascaded pic ids)
52
+ outb(0x04, PORT_PIC1_DATA);
53
+ outb(0x02, PORT_PIC2_DATA);
54
+ // Send ICW4 (enable 8086 mode)
55
+ outb(0x01, PORT_PIC1_DATA);
56
+ outb(0x01, PORT_PIC2_DATA);
57
+ // Mask all irqs (except cascaded PIC2 irq)
58
+ pic_irqmask_write(PIC_IRQMASK_DEFAULT);
59
+ }
60
+
61
+ void
62
+ pic_setup(void)
63
+ {
64
+ dprintf(3, "init pic\n");
65
+ pic_reset(BIOS_HWIRQ0_VECTOR, BIOS_HWIRQ8_VECTOR);
66
+ }
67
+
68
+ void
69
+ enable_hwirq(int hwirq, struct segoff_s func)
70
+ {
71
+ if (!CONFIG_HARDWARE_IRQ)
72
+ return;
73
+ pic_irqmask_mask(1 << hwirq, 0);
74
+ int vector;
75
+ if (hwirq < 8)
76
+ vector = BIOS_HWIRQ0_VECTOR + hwirq;
77
+ else
78
+ vector = BIOS_HWIRQ8_VECTOR + hwirq - 8;
79
+ SET_IVT(vector, func);
80
+ }
81
+
82
+ static u8
83
+ pic_isr1_read(void)
84
+ {
85
+ if (!CONFIG_HARDWARE_IRQ)
86
+ return 0;
87
+ // 0x0b == select OCW1 + read ISR
88
+ outb(0x0b, PORT_PIC1_CMD);
89
+ return inb(PORT_PIC1_CMD);
90
+ }
91
+
92
+ static u8
93
+ pic_isr2_read(void)
94
+ {
95
+ if (!CONFIG_HARDWARE_IRQ)
96
+ return 0;
97
+ // 0x0b == select OCW1 + read ISR
98
+ outb(0x0b, PORT_PIC2_CMD);
99
+ return inb(PORT_PIC2_CMD);
100
+ }
101
+
102
+ // Handler for otherwise unused hardware irqs.
103
+ void VISIBLE16
104
+ handle_hwpic1(void)
105
+ {
106
+ dprintf(DEBUG_ISR_hwpic1, "handle_hwpic1 irq=%x\n", pic_isr1_read());
107
+ pic_eoi1();
108
+ }
109
+
110
+ void VISIBLE16
111
+ handle_hwpic2(void)
112
+ {
113
+ dprintf(DEBUG_ISR_hwpic2, "handle_hwpic2 irq=%x\n", pic_isr2_read());
114
+ pic_eoi2();
115
+ }
@@ -0,0 +1,60 @@
1
+ // Helpers for working with i8259 interrupt controller.
2
+ //
3
+ // Copyright (C) 2008 Kevin O'Connor <kevin@koconnor.net>
4
+ // Copyright (C) 2002 MandrakeSoft S.A.
5
+ //
6
+ // This file may be distributed under the terms of the GNU LGPLv3 license.
7
+ #ifndef __PIC_H
8
+ #define __PIC_H
9
+
10
+ #include "x86.h" // outb
11
+
12
+ #define PORT_PIC1_CMD 0x0020
13
+ #define PORT_PIC1_DATA 0x0021
14
+ #define PORT_PIC2_CMD 0x00a0
15
+ #define PORT_PIC2_DATA 0x00a1
16
+
17
+ // PORT_PIC1 bitdefs
18
+ #define PIC1_IRQ0 (1<<0)
19
+ #define PIC1_IRQ1 (1<<1)
20
+ #define PIC1_IRQ2 (1<<2)
21
+ #define PIC1_IRQ5 (1<<5)
22
+ #define PIC1_IRQ6 (1<<6)
23
+ // PORT_PIC2 bitdefs
24
+ #define PIC2_IRQ8 (1<<8)
25
+ #define PIC2_IRQ12 (1<<12)
26
+ #define PIC2_IRQ13 (1<<13)
27
+ #define PIC2_IRQ14 (1<<14)
28
+
29
+ #define PIC_IRQMASK_DEFAULT ((u16)~PIC1_IRQ2)
30
+
31
+ #define BIOS_HWIRQ0_VECTOR 0x08
32
+ #define BIOS_HWIRQ8_VECTOR 0x70
33
+
34
+ static inline void
35
+ pic_eoi1(void)
36
+ {
37
+ if (!CONFIG_HARDWARE_IRQ)
38
+ return;
39
+ // Send eoi (select OCW2 + eoi)
40
+ outb(0x20, PORT_PIC1_CMD);
41
+ }
42
+
43
+ static inline void
44
+ pic_eoi2(void)
45
+ {
46
+ if (!CONFIG_HARDWARE_IRQ)
47
+ return;
48
+ // Send eoi (select OCW2 + eoi)
49
+ outb(0x20, PORT_PIC2_CMD);
50
+ pic_eoi1();
51
+ }
52
+
53
+ u16 pic_irqmask_read(void);
54
+ void pic_irqmask_write(u16 mask);
55
+ void pic_irqmask_mask(u16 off, u16 on);
56
+ void pic_reset(u8 irq0, u8 irq8);
57
+ void pic_setup(void);
58
+ void enable_hwirq(int hwirq, struct segoff_s func);
59
+
60
+ #endif // pic.h