v86 0.3.6 → 0.4.0

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 +17 -6
  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,319 @@
1
+ // MPT Fusion boot support.
2
+ //
3
+ // Copyright (c) 2012 Verizon, Inc.
4
+ // Copyright (C) 2016 Paolo Bonzini <pbonzini@redhat.com>
5
+ //
6
+ // This file may be distributed under the terms of the GNU LGPLv3 license.
7
+
8
+ #include "biosvar.h" // GET_GLOBALFLAT
9
+ #include "block.h" // struct drive_s
10
+ #include "blockcmd.h" // scsi_drive_setup
11
+ #include "config.h" // CONFIG_*
12
+ #include "fw/paravirt.h" // runningOnQEMU
13
+ #include "malloc.h" // free
14
+ #include "output.h" // dprintf
15
+ #include "pcidevice.h" // foreachpci
16
+ #include "pci_ids.h" // PCI_DEVICE_ID
17
+ #include "pci_regs.h" // PCI_VENDOR_ID
18
+ #include "stacks.h" // run_thread
19
+ #include "std/disk.h" // DISK_RET_SUCCESS
20
+ #include "string.h" // memset
21
+ #include "util.h" // usleep
22
+
23
+ #define MPT_REG_DOORBELL 0x00
24
+ #define MPT_REG_WRITE_SEQ 0x04
25
+ #define MPT_REG_HOST_DIAG 0x08
26
+ #define MPT_REG_TEST 0x0c
27
+ #define MPT_REG_DIAG_DATA 0x10
28
+ #define MPT_REG_DIAG_ADDR 0x14
29
+ #define MPT_REG_ISTATUS 0x30
30
+ #define MPT_REG_IMASK 0x34
31
+ #define MPT_REG_REQ_Q 0x40
32
+ #define MPT_REG_REP_Q 0x44
33
+
34
+ #define MPT_DOORBELL_MSG_RESET 0x40
35
+ #define MPT_DOORBELL_HANDSHAKE 0x42
36
+
37
+ #define MPT_IMASK_DOORBELL 0x01
38
+ #define MPT_IMASK_REPLY 0x08
39
+
40
+ struct mpt_lun_s {
41
+ struct drive_s drive;
42
+ struct pci_device *pci;
43
+ u32 iobase;
44
+ u8 target;
45
+ u8 lun;
46
+ };
47
+
48
+ u8 reply_msg[4] __attribute((aligned(4))) VARLOW;
49
+
50
+ #define MPT_MESSAGE_HDR_FUNCTION_SCSI_IO_REQUEST (0x00)
51
+ #define MPT_MESSAGE_HDR_FUNCTION_IOC_INIT (0x02)
52
+
53
+ static struct MptIOCInitRequest
54
+ {
55
+ u8 WhoInit; /* Which system sent this init request. */
56
+ u8 Reserved1; /* Reserved */
57
+ u8 ChainOffset; /* Chain offset in the SG list. */
58
+ u8 Function; /* Function to execute. */
59
+ u8 Flags; /* Flags */
60
+ u8 MaxDevices; /* Max devices the driver can handle. */
61
+ u8 MaxBuses; /* Max buses the driver can handle. */
62
+ u8 MessageFlags; /* Message flags. */
63
+ u32 MessageContext; /* Message context ID. */
64
+ u16 ReplyFrameSize; /* Reply frame size. */
65
+ u16 Reserved2; /* Reserved */
66
+ u32 HostMfaHighAddr; /* Upper 32bit of the message frames. */
67
+ u32 SenseBufferHighAddr; /* Upper 32bit of the sense buffer. */
68
+ } MptIOCInitRequest = {
69
+ .WhoInit = 2,
70
+ .Function = MPT_MESSAGE_HDR_FUNCTION_IOC_INIT,
71
+ .MaxDevices = 8,
72
+ .MaxBuses = 1,
73
+ .ReplyFrameSize = sizeof(reply_msg),
74
+ .HostMfaHighAddr = 0,
75
+ .SenseBufferHighAddr = 0
76
+ };
77
+
78
+ struct MptIOCInitReply {
79
+ u8 WhoInit; /* Which subsystem sent this init request. */
80
+ u8 Reserved1; /* Reserved */
81
+ u8 MessageLength; /* Message length */
82
+ u8 Function; /* Function. */
83
+ u8 Flags; /* Flags */
84
+ u8 MaxDevices; /* Maximum number of devices the driver can handle. */
85
+ u8 MaxBuses; /* Maximum number of busses the driver can handle. */
86
+ u8 MessageFlags; /* Message flags. */
87
+ u32 MessageContext; /* Message context ID */
88
+ u16 Reserved2; /* Reserved */
89
+ u16 IOCStatus; /* IO controller status. */
90
+ u32 IOCLogInfo; /* IO controller log information. */
91
+ };
92
+
93
+ typedef struct MptSCSIIORequest {
94
+ u8 TargetID; /* Target ID */
95
+ u8 Bus; /* Bus number */
96
+ u8 ChainOffset; /* Chain offset */
97
+ u8 Function; /* Function number. */
98
+ u8 CDBLength; /* CDB length. */
99
+ u8 SenseBufferLength; /* Sense buffer length. */
100
+ u8 Reserved; /* Reserved */
101
+ u8 MessageFlags; /* Message flags. */
102
+ u32 MessageContext; /* Message context ID. */
103
+ u8 LUN[8]; /* LUN */
104
+ u32 Control; /* Control values. */
105
+ u8 CDB[16]; /* The CDB. */
106
+ u32 DataLength; /* Data length. */
107
+ u32 SenseBufferLowAddr; /* Sense buffer low 32bit address. */
108
+ } __attribute__((packed)) MptSCSIIORequest_t;
109
+
110
+ #define MPT_POLL_TIMEOUT 60000
111
+
112
+ typedef struct MptSGEntrySimple32 {
113
+ u32 FlagsLength;
114
+ u32 DataBufferAddressLow;
115
+ } __attribute__((packed)) MptSGEntrySimple32_t;
116
+
117
+ static int
118
+ mpt_scsi_cmd(u32 iobase, struct disk_op_s *op,
119
+ u8 *cdb, u16 target, u16 lun, u16 blocksize)
120
+ {
121
+ u32 end = timer_calc(MPT_POLL_TIMEOUT);
122
+
123
+ u8 sense_buf[18];
124
+ struct scsi_req {
125
+ MptSCSIIORequest_t scsi_io;
126
+ MptSGEntrySimple32_t sge;
127
+ } __attribute__((packed, aligned(4))) req = {
128
+ .scsi_io = {
129
+ .TargetID = target,
130
+ .Bus = 0,
131
+ .Function = MPT_MESSAGE_HDR_FUNCTION_SCSI_IO_REQUEST,
132
+ .CDBLength = 16,
133
+ .SenseBufferLength = 18,
134
+ .MessageContext = end & 0x7fffffff,
135
+ .DataLength = op->count * blocksize,
136
+ .SenseBufferLowAddr = (u32)MAKE_FLATPTR(GET_SEG(SS), &sense_buf[0]),
137
+ },
138
+ .sge = {
139
+ /* end of list, simple entry, end of buffer, last element */
140
+ .FlagsLength = (op->count * blocksize) | 0xD1000000,
141
+ .DataBufferAddressLow = (u32)op->buf_fl,
142
+ }
143
+ };
144
+
145
+ req.scsi_io.LUN[1] = lun;
146
+ memcpy(req.scsi_io.CDB, cdb, 16);
147
+ if (blocksize) {
148
+ if (scsi_is_read(op)) {
149
+ req.scsi_io.Control = 2 << 24;
150
+ } else {
151
+ req.scsi_io.Control = 1 << 24;
152
+ req.sge.FlagsLength |= 0x04000000;
153
+ }
154
+ }
155
+
156
+ outl((u32)MAKE_FLATPTR(GET_SEG(SS), &req), iobase + MPT_REG_REQ_Q);
157
+
158
+ for (;;) {
159
+ if (timer_check(end)) {
160
+ return DISK_RET_ETIMEOUT;
161
+ }
162
+
163
+ u32 istatus = inl(iobase + MPT_REG_ISTATUS);
164
+ if (istatus & MPT_IMASK_REPLY) {
165
+ u32 resp = inl(iobase + MPT_REG_REP_Q);
166
+ /* another read to turn interrupt off */
167
+ inl(iobase + MPT_REG_REP_Q);
168
+ if (resp == req.scsi_io.MessageContext) {
169
+ return DISK_RET_SUCCESS;
170
+ } else if (resp & 0x80000000) {
171
+ outl((u32)&reply_msg[0], iobase + MPT_REG_REP_Q);
172
+ return DISK_RET_EBADTRACK;
173
+ }
174
+ }
175
+ usleep(50);
176
+ }
177
+ }
178
+
179
+ int
180
+ mpt_scsi_process_op(struct disk_op_s *op)
181
+ {
182
+ if (!CONFIG_MPT_SCSI)
183
+ return DISK_RET_EBADTRACK;
184
+
185
+ u8 cdbcmd[16];
186
+ int blocksize = scsi_fill_cmd(op, cdbcmd, sizeof(cdbcmd));
187
+ if (blocksize < 0)
188
+ return default_process_op(op);
189
+
190
+ struct mpt_lun_s *llun_gf =
191
+ container_of(op->drive_fl, struct mpt_lun_s, drive);
192
+ u16 target = GET_GLOBALFLAT(llun_gf->target);
193
+ u16 lun = GET_GLOBALFLAT(llun_gf->lun);
194
+ u32 iobase = GET_GLOBALFLAT(llun_gf->iobase);
195
+ return mpt_scsi_cmd(iobase, op, cdbcmd, target, lun, blocksize);
196
+ }
197
+
198
+ static void
199
+ mpt_scsi_init_lun(struct mpt_lun_s *llun, struct pci_device *pci,
200
+ u32 iobase, u8 target, u8 lun)
201
+ {
202
+ memset(llun, 0, sizeof(*llun));
203
+ llun->drive.type = DTYPE_MPT_SCSI;
204
+ llun->drive.cntl_id = pci->bdf;
205
+ llun->pci = pci;
206
+ llun->target = target;
207
+ llun->lun = lun;
208
+ llun->iobase = iobase;
209
+ }
210
+
211
+ static int
212
+ mpt_scsi_add_lun(u32 lun, struct drive_s *tmpl_drv)
213
+ {
214
+ struct mpt_lun_s *tmpl_llun =
215
+ container_of(tmpl_drv, struct mpt_lun_s, drive);
216
+ struct mpt_lun_s *llun = malloc_fseg(sizeof(*llun));
217
+ if (!llun) {
218
+ warn_noalloc();
219
+ return -1;
220
+ }
221
+ mpt_scsi_init_lun(llun, tmpl_llun->pci, tmpl_llun->iobase,
222
+ tmpl_llun->target, lun);
223
+
224
+ char *name = znprintf(MAXDESCSIZE, "mpt %pP %d:%d",
225
+ llun->pci, llun->target, llun->lun);
226
+ int prio = bootprio_find_scsi_device(llun->pci, llun->target, llun->lun);
227
+ int ret = scsi_drive_setup(&llun->drive, name, prio);
228
+ free(name);
229
+ if (ret) {
230
+ goto fail;
231
+ }
232
+ return 0;
233
+
234
+ fail:
235
+ free(llun);
236
+ return -1;
237
+ }
238
+
239
+ static void
240
+ mpt_scsi_scan_target(struct pci_device *pci, u32 iobase, u8 target)
241
+ {
242
+ struct mpt_lun_s llun0;
243
+
244
+ mpt_scsi_init_lun(&llun0, pci, iobase, target, 0);
245
+
246
+ if (scsi_rep_luns_scan(&llun0.drive, mpt_scsi_add_lun) < 0)
247
+ scsi_sequential_scan(&llun0.drive, 8, mpt_scsi_add_lun);
248
+ }
249
+
250
+ static inline void
251
+ mpt_out_doorbell(u8 func, u8 arg, u16 iobase)
252
+ {
253
+ outl((func << 24) | (arg << 16), iobase + MPT_REG_DOORBELL);
254
+ }
255
+
256
+ static void
257
+ init_mpt_scsi(void *data)
258
+ {
259
+ struct pci_device *pci = data;
260
+ u16 *msg_in_p;
261
+ u32 iobase = pci_enable_iobar(pci, PCI_BASE_ADDRESS_0);
262
+ if (!iobase)
263
+ return;
264
+ struct MptIOCInitReply MptIOCInitReply;
265
+ pci_enable_busmaster(pci);
266
+
267
+ dprintf(1, "found mpt-scsi(%04x) at %pP, io @ %x\n"
268
+ , pci->device, pci, iobase);
269
+
270
+ // reset
271
+ mpt_out_doorbell(MPT_DOORBELL_MSG_RESET, 0, iobase);
272
+ outl(MPT_IMASK_DOORBELL|MPT_IMASK_REPLY , iobase + MPT_REG_IMASK);
273
+ outl(0, iobase + MPT_REG_ISTATUS);
274
+
275
+ // send IOC Init message through the doorbell
276
+ mpt_out_doorbell(MPT_DOORBELL_HANDSHAKE,
277
+ sizeof(MptIOCInitRequest)/sizeof(u32),
278
+ iobase);
279
+
280
+ outsl(iobase + MPT_REG_DOORBELL,
281
+ (u32 *)&MptIOCInitRequest,
282
+ sizeof(MptIOCInitRequest)/sizeof(u32));
283
+
284
+ // Read the reply 16 bits at a time. Cannot use insl
285
+ // because the port is 32 bits wide.
286
+ msg_in_p = (u16 *)&MptIOCInitReply;
287
+ while(msg_in_p != (u16 *)(&MptIOCInitReply + 1))
288
+ *msg_in_p++ = (u16)inl(iobase + MPT_REG_DOORBELL);
289
+
290
+ // Eat doorbell interrupt
291
+ outl(0, iobase + MPT_REG_ISTATUS);
292
+
293
+ // Post reply message used for SCSI errors
294
+ outl((u32)&reply_msg[0], iobase + MPT_REG_REP_Q);
295
+
296
+ int i;
297
+ for (i = 0; i < 7; i++)
298
+ mpt_scsi_scan_target(pci, iobase, i);
299
+ }
300
+
301
+ void
302
+ mpt_scsi_setup(void)
303
+ {
304
+ ASSERT32FLAT();
305
+ if (!CONFIG_MPT_SCSI || !runningOnQEMU()) {
306
+ return;
307
+ }
308
+
309
+ dprintf(3, "init MPT\n");
310
+
311
+ struct pci_device *pci;
312
+ foreachpci(pci) {
313
+ if (pci->vendor == PCI_VENDOR_ID_LSI_LOGIC
314
+ && (pci->device == PCI_DEVICE_ID_LSI_53C1030
315
+ || pci->device == PCI_DEVICE_ID_LSI_SAS1068
316
+ || pci->device == PCI_DEVICE_ID_LSI_SAS1068E))
317
+ run_thread(init_mpt_scsi, pci);
318
+ }
319
+ }
@@ -0,0 +1,8 @@
1
+ #ifndef __MPT_SCSI_H
2
+ #define __MPT_SCSI_H
3
+
4
+ struct disk_op_s;
5
+ int mpt_scsi_process_op(struct disk_op_s *op);
6
+ void mpt_scsi_setup(void);
7
+
8
+ #endif /* __MPT_SCSI_H */
@@ -0,0 +1,199 @@
1
+ // NVMe datastructures and constants
2
+ //
3
+ // Copyright 2017 Amazon.com, Inc. or its affiliates.
4
+ //
5
+ // This file may be distributed under the terms of the GNU LGPLv3 license.
6
+
7
+ #ifndef __NVME_INT_H
8
+ #define __NVME_INT_H
9
+
10
+ #include "types.h" // u32
11
+ #include "pcidevice.h" // struct pci_device
12
+
13
+ /* Data structures */
14
+
15
+ /* The register file of a NVMe host controller. This struct follows the naming
16
+ scheme in the NVMe specification. */
17
+ struct nvme_reg {
18
+ u64 cap; /* controller capabilities */
19
+ u32 vs; /* version */
20
+ u32 intms; /* interrupt mask set */
21
+ u32 intmc; /* interrupt mask clear */
22
+ u32 cc; /* controller configuration */
23
+ u32 _res0;
24
+ u32 csts; /* controller status */
25
+ u32 _res1;
26
+ u32 aqa; /* admin queue attributes */
27
+ u64 asq; /* admin submission queue base address */
28
+ u64 acq; /* admin completion queue base address */
29
+ };
30
+
31
+ /* Submission queue entry */
32
+ struct nvme_sqe {
33
+ union {
34
+ u32 dword[16];
35
+ struct {
36
+ u32 cdw0; /* Command DWORD 0 */
37
+ u32 nsid; /* Namespace ID */
38
+ u64 _res0;
39
+ u64 mptr; /* metadata ptr */
40
+
41
+ u64 dptr_prp1;
42
+ u64 dptr_prp2;
43
+ };
44
+ };
45
+ };
46
+
47
+ /* Completion queue entry */
48
+ struct nvme_cqe {
49
+ union {
50
+ u32 dword[4];
51
+ struct {
52
+ u32 cdw0;
53
+ u32 _res0;
54
+ u16 sq_head;
55
+ u16 sq_id;
56
+ u16 cid;
57
+ u16 status;
58
+ };
59
+ };
60
+ };
61
+
62
+ /* The common part of every submission or completion queue. */
63
+ struct nvme_queue {
64
+ u32 *dbl; /* doorbell */
65
+ u16 mask; /* length - 1 */
66
+ };
67
+
68
+ struct nvme_cq {
69
+ struct nvme_queue common;
70
+ struct nvme_cqe *cqe;
71
+
72
+ /* We have read upto (but not including) this entry in the queue. */
73
+ u16 head;
74
+
75
+ /* The current phase bit the controller uses to indicate that it has written
76
+ a new entry. This is inverted after each wrap. */
77
+ unsigned phase : 1;
78
+ };
79
+
80
+ struct nvme_sq {
81
+ struct nvme_queue common;
82
+ struct nvme_sqe *sqe;
83
+
84
+ /* Corresponding completion queue. We only support a single SQ per CQ. */
85
+ struct nvme_cq *cq;
86
+
87
+ /* The last entry the controller has fetched. */
88
+ u16 head;
89
+
90
+ /* The last value we have written to the tail doorbell. */
91
+ u16 tail;
92
+ };
93
+
94
+ struct nvme_ctrl {
95
+ struct pci_device *pci;
96
+ struct nvme_reg volatile *reg;
97
+
98
+ u32 doorbell_stride; /* in bytes */
99
+
100
+ struct nvme_sq admin_sq;
101
+ struct nvme_cq admin_cq;
102
+
103
+ u32 ns_count;
104
+ struct nvme_namespace *ns;
105
+
106
+ struct nvme_sq io_sq;
107
+ struct nvme_cq io_cq;
108
+ };
109
+
110
+ struct nvme_namespace {
111
+ struct drive_s drive;
112
+ struct nvme_ctrl *ctrl;
113
+
114
+ u32 ns_id;
115
+
116
+ u64 lba_count; /* The total amount of sectors. */
117
+
118
+ u32 block_size;
119
+ u32 metadata_size;
120
+
121
+ /* Page aligned buffer of size NVME_PAGE_SIZE. */
122
+ char *dma_buffer;
123
+ };
124
+
125
+ /* Data structures for NVMe admin identify commands */
126
+
127
+ struct nvme_identify_ctrl {
128
+ u16 vid;
129
+ u16 ssvid;
130
+ char sn[20];
131
+ char mn[40];
132
+ char fr[8];
133
+
134
+ char _boring[516 - 72];
135
+
136
+ u32 nn; /* number of namespaces */
137
+ };
138
+
139
+ struct nvme_identify_ns_list {
140
+ u32 ns_id[1024];
141
+ };
142
+
143
+ struct nvme_lba_format {
144
+ u16 ms;
145
+ u8 lbads;
146
+ u8 rp;
147
+ u8 res;
148
+ };
149
+
150
+ struct nvme_identify_ns {
151
+ u64 nsze;
152
+ u64 ncap;
153
+ u64 nuse;
154
+ u8 nsfeat;
155
+ u8 nlbaf;
156
+ u8 flbas;
157
+
158
+ char _boring[128 - 27];
159
+
160
+ struct nvme_lba_format lbaf[16];
161
+ };
162
+
163
+ union nvme_identify {
164
+ struct nvme_identify_ns ns;
165
+ struct nvme_identify_ctrl ctrl;
166
+ struct nvme_identify_ns_list ns_list;
167
+ };
168
+
169
+ /* NVMe constants */
170
+
171
+ #define NVME_CAP_CSS_NVME (1ULL << 37)
172
+
173
+ #define NVME_CSTS_FATAL (1U << 1)
174
+ #define NVME_CSTS_RDY (1U << 0)
175
+
176
+ #define NVME_CC_EN (1U << 0)
177
+
178
+ #define NVME_SQE_OPC_ADMIN_CREATE_IO_SQ 1U
179
+ #define NVME_SQE_OPC_ADMIN_CREATE_IO_CQ 5U
180
+ #define NVME_SQE_OPC_ADMIN_IDENTIFY 6U
181
+
182
+ #define NVME_SQE_OPC_IO_WRITE 1U
183
+ #define NVME_SQE_OPC_IO_READ 2U
184
+
185
+ #define NVME_ADMIN_IDENTIFY_CNS_ID_NS 0U
186
+ #define NVME_ADMIN_IDENTIFY_CNS_ID_CTRL 1U
187
+ #define NVME_ADMIN_IDENTIFY_CNS_GET_NS_LIST 2U
188
+
189
+ #define NVME_CQE_DW3_P (1U << 16)
190
+
191
+ #define NVME_PAGE_SIZE 4096
192
+
193
+ /* Length for the queue entries. */
194
+ #define NVME_SQE_SIZE_LOG 6
195
+ #define NVME_CQE_SIZE_LOG 4
196
+
197
+ #endif
198
+
199
+ /* EOF */