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,491 @@
1
+ // Support for manipulating bios tables (pir, mptable, acpi, smbios).
2
+ //
3
+ // Copyright (C) 2008,2009 Kevin O'Connor <kevin@koconnor.net>
4
+ //
5
+ // This file may be distributed under the terms of the GNU LGPLv3 license.
6
+
7
+ #include "byteorder.h" // le32_to_cpu
8
+ #include "config.h" // CONFIG_*
9
+ #include "hw/pci.h" // pci_config_writeb
10
+ #include "malloc.h" // malloc_fseg
11
+ #include "memmap.h" // SYMBOL
12
+ #include "output.h" // dprintf
13
+ #include "romfile.h" // romfile_find
14
+ #include "std/acpi.h" // struct rsdp_descriptor
15
+ #include "std/mptable.h" // MPTABLE_SIGNATURE
16
+ #include "std/pirtable.h" // struct pir_header
17
+ #include "std/smbios.h" // struct smbios_entry_point
18
+ #include "string.h" // memcpy
19
+ #include "util.h" // copy_table
20
+ #include "x86.h" // outb
21
+
22
+ struct pir_header *PirAddr VARFSEG;
23
+
24
+ void
25
+ copy_pir(void *pos)
26
+ {
27
+ struct pir_header *p = pos;
28
+ if (p->signature != PIR_SIGNATURE)
29
+ return;
30
+ if (PirAddr)
31
+ return;
32
+ if (p->size < sizeof(*p))
33
+ return;
34
+ if (checksum(pos, p->size) != 0)
35
+ return;
36
+ void *newpos = malloc_fseg(p->size);
37
+ if (!newpos) {
38
+ warn_noalloc();
39
+ return;
40
+ }
41
+ dprintf(1, "Copying PIR from %p to %p\n", pos, newpos);
42
+ memcpy(newpos, pos, p->size);
43
+ PirAddr = newpos;
44
+ }
45
+
46
+ void
47
+ copy_mptable(void *pos)
48
+ {
49
+ struct mptable_floating_s *p = pos;
50
+ if (p->signature != MPTABLE_SIGNATURE)
51
+ return;
52
+ if (!p->physaddr)
53
+ return;
54
+ if (checksum(pos, sizeof(*p)) != 0)
55
+ return;
56
+ u32 length = p->length * 16;
57
+ u16 mpclength = ((struct mptable_config_s *)p->physaddr)->length;
58
+ if (length + mpclength > BUILD_MAX_MPTABLE_FSEG) {
59
+ dprintf(1, "Skipping MPTABLE copy due to large size (%d bytes)\n"
60
+ , length + mpclength);
61
+ return;
62
+ }
63
+ // Allocate final memory location. (In theory the config
64
+ // structure can go in high memory, but Linux kernels before
65
+ // v2.6.30 crash with that.)
66
+ struct mptable_floating_s *newpos = malloc_fseg(length + mpclength);
67
+ if (!newpos) {
68
+ warn_noalloc();
69
+ return;
70
+ }
71
+ dprintf(1, "Copying MPTABLE from %p/%x to %p\n", pos, p->physaddr, newpos);
72
+ memcpy(newpos, pos, length);
73
+ newpos->physaddr = (u32)newpos + length;
74
+ newpos->checksum -= checksum(newpos, sizeof(*newpos));
75
+ memcpy((void*)newpos + length, (void*)p->physaddr, mpclength);
76
+ }
77
+
78
+
79
+ /****************************************************************
80
+ * ACPI
81
+ ****************************************************************/
82
+
83
+ static int
84
+ get_acpi_rsdp_length(void *pos, unsigned size)
85
+ {
86
+ struct rsdp_descriptor *p = pos;
87
+ if (p->signature != RSDP_SIGNATURE)
88
+ return -1;
89
+ u32 length = 20;
90
+ if (length > size)
91
+ return -1;
92
+ if (checksum(pos, length) != 0)
93
+ return -1;
94
+ if (p->revision > 1) {
95
+ length = p->length;
96
+ if (length > size)
97
+ return -1;
98
+ if (checksum(pos, length) != 0)
99
+ return -1;
100
+ }
101
+ return length;
102
+ }
103
+
104
+ struct rsdp_descriptor *RsdpAddr;
105
+
106
+ void
107
+ copy_acpi_rsdp(void *pos)
108
+ {
109
+ if (RsdpAddr)
110
+ return;
111
+ int length = get_acpi_rsdp_length(pos, -1);
112
+ if (length < 0)
113
+ return;
114
+ void *newpos = malloc_fseg(length);
115
+ if (!newpos) {
116
+ warn_noalloc();
117
+ return;
118
+ }
119
+ dprintf(1, "Copying ACPI RSDP from %p to %p\n", pos, newpos);
120
+ memcpy(newpos, pos, length);
121
+ RsdpAddr = newpos;
122
+ }
123
+
124
+ void *find_acpi_rsdp(void)
125
+ {
126
+ unsigned long start = SYMBOL(zonefseg_start);
127
+ unsigned long end = SYMBOL(zonefseg_end);
128
+ unsigned long pos;
129
+
130
+ for (pos = ALIGN(start, 0x10); pos <= ALIGN_DOWN(end, 0x10); pos += 0x10)
131
+ if (get_acpi_rsdp_length((void *)pos, end - pos) >= 0)
132
+ return (void *)pos;
133
+
134
+ return NULL;
135
+ }
136
+
137
+ void *
138
+ find_acpi_table(u32 signature)
139
+ {
140
+ dprintf(4, "rsdp=%p\n", RsdpAddr);
141
+ if (!RsdpAddr || RsdpAddr->signature != RSDP_SIGNATURE)
142
+ return NULL;
143
+ struct rsdt_descriptor_rev1 *rsdt = (void*)RsdpAddr->rsdt_physical_address;
144
+ dprintf(4, "rsdt=%p\n", rsdt);
145
+ if (!rsdt || rsdt->signature != RSDT_SIGNATURE)
146
+ return NULL;
147
+ void *end = (void*)rsdt + rsdt->length;
148
+ int i;
149
+ for (i=0; (void*)&rsdt->table_offset_entry[i] < end; i++) {
150
+ struct acpi_table_header *tbl = (void*)rsdt->table_offset_entry[i];
151
+ if (!tbl || tbl->signature != signature)
152
+ continue;
153
+ dprintf(4, "table(%x)=%p\n", signature, tbl);
154
+ return tbl;
155
+ }
156
+ dprintf(4, "no table %x found\n", signature);
157
+ return NULL;
158
+ }
159
+
160
+ u32
161
+ find_resume_vector(void)
162
+ {
163
+ struct fadt_descriptor_rev1 *fadt = find_acpi_table(FACP_SIGNATURE);
164
+ if (!fadt)
165
+ return 0;
166
+ struct facs_descriptor_rev1 *facs = (void*)fadt->firmware_ctrl;
167
+ dprintf(4, "facs=%p\n", facs);
168
+ if (! facs || facs->signature != FACS_SIGNATURE)
169
+ return 0;
170
+ // Found it.
171
+ dprintf(4, "resume addr=%d\n", facs->firmware_waking_vector);
172
+ return facs->firmware_waking_vector;
173
+ }
174
+
175
+ static struct acpi_20_generic_address acpi_reset_reg;
176
+ static u8 acpi_reset_val;
177
+ u32 acpi_pm1a_cnt VARFSEG;
178
+ u16 acpi_pm_base = 0xb000;
179
+
180
+ #define acpi_ga_to_bdf(addr) pci_to_bdf(0, (addr >> 32) & 0xffff, (addr >> 16) & 0xffff)
181
+
182
+ void
183
+ acpi_reboot(void)
184
+ {
185
+ // Check it passed the sanity checks in acpi_set_reset_reg() and was set
186
+ if (acpi_reset_reg.register_bit_width != 8)
187
+ return;
188
+
189
+ u64 addr = le64_to_cpu(acpi_reset_reg.address);
190
+
191
+ dprintf(1, "ACPI hard reset %d:%llx (%x)\n",
192
+ acpi_reset_reg.address_space_id, addr, acpi_reset_val);
193
+
194
+ switch (acpi_reset_reg.address_space_id) {
195
+ case 0: // System Memory
196
+ writeb((void *)(u32)addr, acpi_reset_val);
197
+ break;
198
+ case 1: // System I/O
199
+ outb(acpi_reset_val, addr);
200
+ break;
201
+ case 2: // PCI config space
202
+ pci_config_writeb(acpi_ga_to_bdf(addr), addr & 0xffff, acpi_reset_val);
203
+ break;
204
+ }
205
+ }
206
+
207
+ static void
208
+ acpi_set_reset_reg(struct acpi_20_generic_address *reg, u8 val)
209
+ {
210
+ if (!reg || reg->address_space_id > 2 ||
211
+ reg->register_bit_width != 8 || reg->register_bit_offset)
212
+ return;
213
+
214
+ acpi_reset_reg = *reg;
215
+ acpi_reset_val = val;
216
+ }
217
+
218
+ void
219
+ find_acpi_features(void)
220
+ {
221
+ struct fadt_descriptor_rev1 *fadt = find_acpi_table(FACP_SIGNATURE);
222
+ if (!fadt)
223
+ return;
224
+ u32 pm_tmr = le32_to_cpu(fadt->pm_tmr_blk);
225
+ u32 pm1a_cnt = le32_to_cpu(fadt->pm1a_cnt_blk);
226
+ dprintf(4, "pm_tmr_blk=%x\n", pm_tmr);
227
+ if (pm_tmr)
228
+ pmtimer_setup(pm_tmr);
229
+ if (pm1a_cnt)
230
+ acpi_pm1a_cnt = pm1a_cnt;
231
+
232
+ // Theoretically we should check the 'reset_reg_sup' flag, but Windows
233
+ // doesn't and thus nobody seems to *set* it. If the table is large enough
234
+ // to include it, let the sanity checks in acpi_set_reset_reg() suffice.
235
+ if (fadt->length >= 129) {
236
+ void *p = fadt;
237
+ acpi_set_reset_reg(p + 116, *(u8 *)(p + 128));
238
+ }
239
+ }
240
+
241
+
242
+ /****************************************************************
243
+ * SMBIOS
244
+ ****************************************************************/
245
+
246
+ // Iterator for each sub-table in the smbios blob.
247
+ void *
248
+ smbios_next(struct smbios_entry_point *smbios, void *prev)
249
+ {
250
+ if (!smbios)
251
+ return NULL;
252
+ void *start = (void*)smbios->structure_table_address;
253
+ void *end = start + smbios->structure_table_length;
254
+
255
+ if (!prev) {
256
+ prev = start;
257
+ } else {
258
+ struct smbios_structure_header *hdr = prev;
259
+ if (prev + sizeof(*hdr) > end)
260
+ return NULL;
261
+ prev += hdr->length + 2;
262
+ while (prev < end && (*(u8*)(prev-1) != '\0' || *(u8*)(prev-2) != '\0'))
263
+ prev++;
264
+ }
265
+ struct smbios_structure_header *hdr = prev;
266
+ if (prev >= end || prev + sizeof(*hdr) >= end || prev + hdr->length >= end)
267
+ return NULL;
268
+ return prev;
269
+ }
270
+
271
+ struct smbios_entry_point *SMBiosAddr;
272
+
273
+ void
274
+ copy_smbios(void *pos)
275
+ {
276
+ if (SMBiosAddr)
277
+ return;
278
+ struct smbios_entry_point *p = pos;
279
+ if (p->signature != SMBIOS_SIGNATURE)
280
+ return;
281
+ if (checksum(pos, 0x10) != 0)
282
+ return;
283
+ if (memcmp(p->intermediate_anchor_string, "_DMI_", 5))
284
+ return;
285
+ if (checksum(pos+0x10, p->length-0x10) != 0)
286
+ return;
287
+ struct smbios_entry_point *newpos = malloc_fseg(p->length);
288
+ if (!newpos) {
289
+ warn_noalloc();
290
+ return;
291
+ }
292
+ dprintf(1, "Copying SMBIOS entry point from %p to %p\n", pos, newpos);
293
+ memcpy(newpos, pos, p->length);
294
+ SMBiosAddr = newpos;
295
+ }
296
+
297
+ void
298
+ display_uuid(void)
299
+ {
300
+ struct smbios_type_1 *tbl = smbios_next(SMBiosAddr, NULL);
301
+ int minlen = offsetof(struct smbios_type_1, uuid) + sizeof(tbl->uuid);
302
+ for (; tbl; tbl = smbios_next(SMBiosAddr, tbl))
303
+ if (tbl->header.type == 1 && tbl->header.length >= minlen) {
304
+ u8 *uuid = tbl->uuid;
305
+ u8 empty_uuid[sizeof(tbl->uuid)] = { 0 };
306
+ if (memcmp(uuid, empty_uuid, sizeof(empty_uuid)) == 0)
307
+ return;
308
+
309
+ /*
310
+ * According to SMBIOS v2.6 the first three fields are encoded in
311
+ * little-endian format. Versions prior to v2.6 did not specify
312
+ * the encoding, but we follow dmidecode and assume big-endian
313
+ * encoding.
314
+ */
315
+ if (SMBiosAddr->smbios_major_version > 2 ||
316
+ (SMBiosAddr->smbios_major_version == 2 &&
317
+ SMBiosAddr->smbios_minor_version >= 6)) {
318
+ printf("Machine UUID"
319
+ " %02x%02x%02x%02x"
320
+ "-%02x%02x"
321
+ "-%02x%02x"
322
+ "-%02x%02x"
323
+ "-%02x%02x%02x%02x%02x%02x\n"
324
+ , uuid[ 3], uuid[ 2], uuid[ 1], uuid[ 0]
325
+ , uuid[ 5], uuid[ 4]
326
+ , uuid[ 7], uuid[ 6]
327
+ , uuid[ 8], uuid[ 9]
328
+ , uuid[10], uuid[11], uuid[12]
329
+ , uuid[13], uuid[14], uuid[15]);
330
+ } else {
331
+ printf("Machine UUID"
332
+ " %02x%02x%02x%02x"
333
+ "-%02x%02x"
334
+ "-%02x%02x"
335
+ "-%02x%02x"
336
+ "-%02x%02x%02x%02x%02x%02x\n"
337
+ , uuid[ 0], uuid[ 1], uuid[ 2], uuid[ 3]
338
+ , uuid[ 4], uuid[ 5]
339
+ , uuid[ 6], uuid[ 7]
340
+ , uuid[ 8], uuid[ 9]
341
+ , uuid[10], uuid[11], uuid[12]
342
+ , uuid[13], uuid[14], uuid[15]);
343
+ }
344
+
345
+ return;
346
+ }
347
+ }
348
+
349
+ #define set_str_field_or_skip(type, field, value) \
350
+ do { \
351
+ int size = (value != NULL) ? strlen(value) + 1 : 0; \
352
+ if (size > 1) { \
353
+ memcpy(end, value, size); \
354
+ end += size; \
355
+ p->field = ++str_index; \
356
+ } else { \
357
+ p->field = 0; \
358
+ } \
359
+ } while (0)
360
+
361
+ static void *
362
+ smbios_new_type_0(void *start,
363
+ const char *vendor, const char *version, const char *date)
364
+ {
365
+ struct smbios_type_0 *p = (struct smbios_type_0 *)start;
366
+ char *end = (char *)start + sizeof(struct smbios_type_0);
367
+ int str_index = 0;
368
+
369
+ p->header.type = 0;
370
+ p->header.length = sizeof(struct smbios_type_0);
371
+ p->header.handle = 0;
372
+
373
+ set_str_field_or_skip(0, vendor_str, vendor);
374
+ set_str_field_or_skip(0, bios_version_str, version);
375
+ p->bios_starting_address_segment = 0xe800;
376
+ set_str_field_or_skip(0, bios_release_date_str, date);
377
+
378
+ p->bios_rom_size = 0; /* FIXME */
379
+
380
+ /* BIOS characteristics not supported */
381
+ memset(p->bios_characteristics, 0, 8);
382
+ p->bios_characteristics[0] = 0x08;
383
+
384
+ /* Enable targeted content distribution (needed for SVVP) */
385
+ p->bios_characteristics_extension_bytes[0] = 0;
386
+ p->bios_characteristics_extension_bytes[1] = 4;
387
+
388
+ p->system_bios_major_release = 0;
389
+ p->system_bios_minor_release = 0;
390
+ p->embedded_controller_major_release = 0xFF;
391
+ p->embedded_controller_minor_release = 0xFF;
392
+
393
+ *end = 0;
394
+ end++;
395
+ if (!str_index) {
396
+ *end = 0;
397
+ end++;
398
+ }
399
+
400
+ return end;
401
+ }
402
+
403
+ #define BIOS_NAME "SeaBIOS"
404
+ #define BIOS_DATE "04/01/2014"
405
+
406
+ static int
407
+ smbios_romfile_setup(void)
408
+ {
409
+ struct romfile_s *f_anchor = romfile_find("etc/smbios/smbios-anchor");
410
+ struct romfile_s *f_tables = romfile_find("etc/smbios/smbios-tables");
411
+ struct smbios_entry_point ep;
412
+ struct smbios_type_0 *t0;
413
+ u16 qtables_len, need_t0 = 1;
414
+ u8 *qtables, *tables;
415
+
416
+ if (!f_anchor || !f_tables || f_anchor->size != sizeof(ep))
417
+ return 0;
418
+
419
+ f_anchor->copy(f_anchor, &ep, f_anchor->size);
420
+
421
+ if (f_tables->size != ep.structure_table_length)
422
+ return 0;
423
+
424
+ qtables = malloc_tmphigh(f_tables->size);
425
+ if (!qtables) {
426
+ warn_noalloc();
427
+ return 0;
428
+ }
429
+ f_tables->copy(f_tables, qtables, f_tables->size);
430
+ ep.structure_table_address = (u32)qtables; /* for smbios_next(), below */
431
+
432
+ /* did we get a type 0 structure ? */
433
+ for (t0 = smbios_next(&ep, NULL); t0; t0 = smbios_next(&ep, t0))
434
+ if (t0->header.type == 0) {
435
+ need_t0 = 0;
436
+ break;
437
+ }
438
+
439
+ qtables_len = ep.structure_table_length;
440
+ if (need_t0) {
441
+ /* common case: add our own type 0, with 3 strings and 4 '\0's */
442
+ u16 t0_len = sizeof(struct smbios_type_0) + strlen(BIOS_NAME) +
443
+ strlen(VERSION) + strlen(BIOS_DATE) + 4;
444
+ ep.structure_table_length += t0_len;
445
+ if (t0_len > ep.max_structure_size)
446
+ ep.max_structure_size = t0_len;
447
+ ep.number_of_structures++;
448
+ }
449
+
450
+ /* allocate final blob and record its address in the entry point */
451
+ if (ep.structure_table_length > BUILD_MAX_SMBIOS_FSEG)
452
+ tables = malloc_high(ep.structure_table_length);
453
+ else
454
+ tables = malloc_fseg(ep.structure_table_length);
455
+ if (!tables) {
456
+ warn_noalloc();
457
+ free(qtables);
458
+ return 0;
459
+ }
460
+ ep.structure_table_address = (u32)tables;
461
+
462
+ /* populate final blob */
463
+ if (need_t0)
464
+ tables = smbios_new_type_0(tables, BIOS_NAME, VERSION, BIOS_DATE);
465
+ memcpy(tables, qtables, qtables_len);
466
+ free(qtables);
467
+
468
+ /* finalize entry point */
469
+ ep.checksum -= checksum(&ep, 0x10);
470
+ ep.intermediate_checksum -= checksum((void *)&ep + 0x10, ep.length - 0x10);
471
+
472
+ copy_smbios(&ep);
473
+ return 1;
474
+ }
475
+
476
+ void
477
+ smbios_setup(void)
478
+ {
479
+ if (smbios_romfile_setup())
480
+ return;
481
+ smbios_legacy_setup();
482
+ }
483
+
484
+ void
485
+ copy_table(void *pos)
486
+ {
487
+ copy_pir(pos);
488
+ copy_mptable(pos);
489
+ copy_acpi_rsdp(pos);
490
+ copy_smbios(pos);
491
+ }