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,585 @@
1
+ // smbios table generation (on emulators)
2
+ // DO NOT ADD NEW FEATURES HERE. (See paravirt.c / biostables.c instead.)
3
+ //
4
+ // Copyright (C) 2008,2009 Kevin O'Connor <kevin@koconnor.net>
5
+ // Copyright (C) 2006 Fabrice Bellard
6
+ //
7
+ // This file may be distributed under the terms of the GNU LGPLv3 license.
8
+
9
+ #include "config.h" // CONFIG_*
10
+ #include "malloc.h" // free
11
+ #include "output.h" // dprintf
12
+ #include "paravirt.h" // RamSize
13
+ #include "romfile.h" // romfile_findprefix
14
+ #include "std/smbios.h" // struct smbios_entry_point
15
+ #include "string.h" // memset
16
+ #include "util.h" // MaxCountCPUs
17
+ #include "x86.h" // cpuid
18
+
19
+ static void
20
+ smbios_entry_point_setup(u16 max_structure_size,
21
+ u16 structure_table_length,
22
+ void *structure_table_address,
23
+ u16 number_of_structures)
24
+ {
25
+ void *finaltable;
26
+ if (structure_table_length <= BUILD_MAX_SMBIOS_FSEG)
27
+ // Table is small enough for f-seg - allocate there. This
28
+ // works around a bug in JunOS (at least for small SMBIOS tables).
29
+ finaltable = malloc_fseg(structure_table_length);
30
+ else
31
+ finaltable = malloc_high(structure_table_length);
32
+ if (!finaltable) {
33
+ warn_noalloc();
34
+ return;
35
+ }
36
+ memcpy(finaltable, structure_table_address, structure_table_length);
37
+
38
+ struct smbios_entry_point ep;
39
+ memset(&ep, 0, sizeof(ep));
40
+ ep.signature = SMBIOS_SIGNATURE;
41
+ ep.length = 0x1f;
42
+ ep.smbios_major_version = 2;
43
+ ep.smbios_minor_version = 4;
44
+ ep.max_structure_size = max_structure_size;
45
+ memcpy(ep.intermediate_anchor_string, "_DMI_", 5);
46
+
47
+ ep.structure_table_length = structure_table_length;
48
+ ep.structure_table_address = (u32)finaltable;
49
+ ep.number_of_structures = number_of_structures;
50
+ ep.smbios_bcd_revision = 0x24;
51
+
52
+ ep.checksum -= checksum(&ep, 0x10);
53
+
54
+ ep.intermediate_checksum -= checksum((void*)&ep + 0x10, ep.length - 0x10);
55
+
56
+ copy_smbios(&ep);
57
+ }
58
+
59
+ static int
60
+ get_field(int type, int offset, void *dest)
61
+ {
62
+ char name[128];
63
+ snprintf(name, sizeof(name), "smbios/field%d-%d", type, offset);
64
+ struct romfile_s *file = romfile_find(name);
65
+ if (!file)
66
+ return 0;
67
+ file->copy(file, dest, file->size);
68
+ return file->size;
69
+ }
70
+
71
+ static int
72
+ get_external(int type, char **p, unsigned *nr_structs,
73
+ unsigned *max_struct_size, char *end)
74
+ {
75
+ static u64 used_bitmap[4] = { 0 };
76
+ char *start = *p;
77
+
78
+ /* Check if we've already reported these tables */
79
+ if (used_bitmap[(type >> 6) & 0x3] & (1ULL << (type & 0x3f)))
80
+ return 1;
81
+
82
+ /* Don't introduce spurious end markers */
83
+ if (type == 127)
84
+ return 0;
85
+
86
+ char prefix[128];
87
+ snprintf(prefix, sizeof(prefix), "smbios/table%d-", type);
88
+ struct romfile_s *file = NULL;
89
+ for (;;) {
90
+ file = romfile_findprefix(prefix, file);
91
+ if (!file)
92
+ break;
93
+
94
+ if (end - *p < file->size) {
95
+ warn_noalloc();
96
+ break;
97
+ }
98
+
99
+ struct smbios_structure_header *header = (void*)*p;
100
+ file->copy(file, header, file->size);
101
+ *p += file->size;
102
+
103
+ /* Entries end with a double NULL char, if there's a string at
104
+ * the end (length is greater than formatted length), the string
105
+ * terminator provides the first NULL. */
106
+ *((u8*)*p) = 0;
107
+ (*p)++;
108
+ if (header->length >= file->size) {
109
+ *((u8*)*p) = 0;
110
+ (*p)++;
111
+ }
112
+
113
+ (*nr_structs)++;
114
+ if (*p - (char*)header > *max_struct_size)
115
+ *max_struct_size = *p - (char*)header;
116
+ }
117
+
118
+ if (start == *p)
119
+ return 0;
120
+
121
+ /* Mark that we've reported on this type */
122
+ used_bitmap[(type >> 6) & 0x3] |= (1ULL << (type & 0x3f));
123
+ return 1;
124
+ }
125
+
126
+ #define load_str_field_with_default(type, field, def) \
127
+ do { \
128
+ size = get_field(type, offsetof(struct smbios_type_##type, \
129
+ field), end); \
130
+ if (size == 1) { \
131
+ /* zero-length string, skip to avoid bogus end marker */ \
132
+ p->field = 0; \
133
+ } else if (size > 1) { \
134
+ end += size; \
135
+ p->field = ++str_index; \
136
+ } else { \
137
+ memcpy(end, def, sizeof(def)); \
138
+ end += sizeof(def); \
139
+ p->field = ++str_index; \
140
+ } \
141
+ } while (0)
142
+
143
+ #define load_str_field_or_skip(type, field) \
144
+ do { \
145
+ size = get_field(type, offsetof(struct smbios_type_##type, \
146
+ field), end); \
147
+ if (size > 1) { \
148
+ end += size; \
149
+ p->field = ++str_index; \
150
+ } else { \
151
+ p->field = 0; \
152
+ } \
153
+ } while (0)
154
+
155
+ #define set_field_with_default(type, field, def) \
156
+ do { \
157
+ if (!get_field(type, offsetof(struct smbios_type_##type, \
158
+ field), &p->field)) { \
159
+ p->field = def; \
160
+ } \
161
+ } while (0)
162
+
163
+ /* Type 0 -- BIOS Information */
164
+ #define RELEASE_DATE_STR "01/01/2011"
165
+ static void *
166
+ smbios_init_type_0(void *start)
167
+ {
168
+ struct smbios_type_0 *p = (struct smbios_type_0 *)start;
169
+ char *end = (char *)start + sizeof(struct smbios_type_0);
170
+ size_t size;
171
+ int str_index = 0;
172
+
173
+ p->header.type = 0;
174
+ p->header.length = sizeof(struct smbios_type_0);
175
+ p->header.handle = 0;
176
+
177
+ load_str_field_with_default(0, vendor_str, BUILD_APPNAME);
178
+ load_str_field_with_default(0, bios_version_str, BUILD_APPNAME);
179
+
180
+ p->bios_starting_address_segment = 0xe800;
181
+
182
+ load_str_field_with_default(0, bios_release_date_str, RELEASE_DATE_STR);
183
+
184
+ p->bios_rom_size = 0; /* FIXME */
185
+
186
+ if (!get_field(0, offsetof(struct smbios_type_0, bios_characteristics),
187
+ &p->bios_characteristics)) {
188
+ memset(p->bios_characteristics, 0, 8);
189
+ /* BIOS characteristics not supported */
190
+ p->bios_characteristics[0] = 0x08;
191
+ }
192
+
193
+ if (!get_field(0, offsetof(struct smbios_type_0,
194
+ bios_characteristics_extension_bytes),
195
+ &p->bios_characteristics_extension_bytes)) {
196
+ p->bios_characteristics_extension_bytes[0] = 0;
197
+ /* Enable targeted content distribution. Needed for SVVP */
198
+ p->bios_characteristics_extension_bytes[1] = 4;
199
+ }
200
+
201
+ set_field_with_default(0, system_bios_major_release, 1);
202
+ set_field_with_default(0, system_bios_minor_release, 0);
203
+ set_field_with_default(0, embedded_controller_major_release, 0xff);
204
+ set_field_with_default(0, embedded_controller_minor_release, 0xff);
205
+
206
+ *end = 0;
207
+ end++;
208
+
209
+ return end;
210
+ }
211
+
212
+ /* Type 1 -- System Information */
213
+ static void *
214
+ smbios_init_type_1(void *start)
215
+ {
216
+ struct smbios_type_1 *p = (struct smbios_type_1 *)start;
217
+ char *end = (char *)start + sizeof(struct smbios_type_1);
218
+ size_t size;
219
+ int str_index = 0;
220
+
221
+ p->header.type = 1;
222
+ p->header.length = sizeof(struct smbios_type_1);
223
+ p->header.handle = 0x100;
224
+
225
+ load_str_field_with_default(1, manufacturer_str, BUILD_APPNAME);
226
+ load_str_field_with_default(1, product_name_str, BUILD_APPNAME);
227
+ load_str_field_or_skip(1, version_str);
228
+ load_str_field_or_skip(1, serial_number_str);
229
+
230
+ if (!get_field(1, offsetof(struct smbios_type_1, uuid), &p->uuid))
231
+ memset(p->uuid, 0, 16);
232
+
233
+ set_field_with_default(1, wake_up_type, 0x06); /* power switch */
234
+
235
+ load_str_field_or_skip(1, sku_number_str);
236
+ load_str_field_or_skip(1, family_str);
237
+
238
+ *end = 0;
239
+ end++;
240
+ if (!str_index) {
241
+ *end = 0;
242
+ end++;
243
+ }
244
+
245
+ return end;
246
+ }
247
+
248
+ /* Type 3 -- System Enclosure */
249
+ static void *
250
+ smbios_init_type_3(void *start)
251
+ {
252
+ struct smbios_type_3 *p = (struct smbios_type_3 *)start;
253
+ char *end = (char *)start + sizeof(struct smbios_type_3);
254
+ size_t size;
255
+ int str_index = 0;
256
+
257
+ p->header.type = 3;
258
+ p->header.length = sizeof(struct smbios_type_3);
259
+ p->header.handle = 0x300;
260
+
261
+ load_str_field_with_default(3, manufacturer_str, BUILD_APPNAME);
262
+ set_field_with_default(3, type, 0x01); /* other */
263
+
264
+ load_str_field_or_skip(3, version_str);
265
+ load_str_field_or_skip(3, serial_number_str);
266
+ load_str_field_or_skip(3, asset_tag_number_str);
267
+
268
+ set_field_with_default(3, boot_up_state, 0x03); /* safe */
269
+ set_field_with_default(3, power_supply_state, 0x03); /* safe */
270
+ set_field_with_default(3, thermal_state, 0x03); /* safe */
271
+ set_field_with_default(3, security_status, 0x02); /* unknown */
272
+
273
+ set_field_with_default(3, oem_defined, 0);
274
+ set_field_with_default(3, height, 0);
275
+ set_field_with_default(3, number_of_power_cords, 0);
276
+ set_field_with_default(3, contained_element_count, 0);
277
+
278
+ *end = 0;
279
+ end++;
280
+ if (!str_index) {
281
+ *end = 0;
282
+ end++;
283
+ }
284
+
285
+ return end;
286
+ }
287
+
288
+ /* Type 4 -- Processor Information */
289
+ static void *
290
+ smbios_init_type_4(void *start, unsigned int cpu_number)
291
+ {
292
+ struct smbios_type_4 *p = (struct smbios_type_4 *)start;
293
+ char *end = (char *)start + sizeof(struct smbios_type_4);
294
+ size_t size;
295
+ int str_index = 0;
296
+ char name[1024];
297
+
298
+ p->header.type = 4;
299
+ p->header.length = sizeof(struct smbios_type_4);
300
+ p->header.handle = 0x400 + cpu_number;
301
+
302
+ size = get_field(4, offsetof(struct smbios_type_4, socket_designation_str),
303
+ name);
304
+ if (size)
305
+ snprintf(name + size - 1, sizeof(name) - size, "%2x", cpu_number);
306
+ else
307
+ snprintf(name, sizeof(name), "CPU%2x", cpu_number);
308
+
309
+ memcpy(end, name, strlen(name) + 1);
310
+ end += strlen(name) + 1;
311
+ p->socket_designation_str = ++str_index;
312
+
313
+ set_field_with_default(4, processor_type, 0x03); /* CPU */
314
+ set_field_with_default(4, processor_family, 0x01); /* other */
315
+
316
+ load_str_field_with_default(4, processor_manufacturer_str, BUILD_APPNAME);
317
+
318
+ if (!get_field(4, offsetof(struct smbios_type_4, processor_id)
319
+ , p->processor_id)) {
320
+ u32 cpuid_signature, ebx, ecx, cpuid_features;
321
+ cpuid(1, &cpuid_signature, &ebx, &ecx, &cpuid_features);
322
+ p->processor_id[0] = cpuid_signature;
323
+ p->processor_id[1] = cpuid_features;
324
+ }
325
+
326
+ load_str_field_or_skip(4, processor_version_str);
327
+ set_field_with_default(4, voltage, 0);
328
+ set_field_with_default(4, external_clock, 0);
329
+
330
+ set_field_with_default(4, max_speed, 2000);
331
+ set_field_with_default(4, current_speed, 2000);
332
+
333
+ set_field_with_default(4, status, 0x41); /* socket populated, CPU enabled */
334
+ set_field_with_default(4, processor_upgrade, 0x01); /* other */
335
+
336
+ /* cache information structure not provided */
337
+ p->l1_cache_handle = 0xffff;
338
+ p->l2_cache_handle = 0xffff;
339
+ p->l3_cache_handle = 0xffff;
340
+
341
+ *end = 0;
342
+ end++;
343
+ if (!str_index) {
344
+ *end = 0;
345
+ end++;
346
+ }
347
+
348
+ return end;
349
+ }
350
+
351
+ /* Type 16 -- Physical Memory Array */
352
+ static void *
353
+ smbios_init_type_16(void *start, u32 memory_size_mb, int nr_mem_devs)
354
+ {
355
+ struct smbios_type_16 *p = (struct smbios_type_16*)start;
356
+
357
+ p->header.type = 16;
358
+ p->header.length = sizeof(struct smbios_type_16);
359
+ p->header.handle = 0x1000;
360
+
361
+ set_field_with_default(16, location, 0x01); /* other */
362
+ set_field_with_default(16, use, 0x03); /* system memory */
363
+ /* Multi-bit ECC to make Microsoft happy */
364
+ set_field_with_default(16, error_correction, 0x06);
365
+ /* 0x80000000 = unknown, accept sizes < 2TB - TODO multiple arrays */
366
+ p->maximum_capacity = memory_size_mb < 2 << 20 ?
367
+ memory_size_mb << 10 : 0x80000000;
368
+ p->memory_error_information_handle = 0xfffe; /* none provided */
369
+ p->number_of_memory_devices = nr_mem_devs;
370
+
371
+ start += sizeof(struct smbios_type_16);
372
+ *((u16 *)start) = 0;
373
+
374
+ return start + 2;
375
+ }
376
+
377
+ /* Type 17 -- Memory Device */
378
+ static void *
379
+ smbios_init_type_17(void *start, u32 size_mb, int instance)
380
+ {
381
+ struct smbios_type_17 *p = (struct smbios_type_17 *)start;
382
+ char *end = (char *)start + sizeof(struct smbios_type_17);
383
+ size_t size;
384
+ int str_index = 0;
385
+ char name[1024];
386
+
387
+ p->header.type = 17;
388
+ p->header.length = sizeof(struct smbios_type_17);
389
+ p->header.handle = 0x1100 + instance;
390
+
391
+ p->physical_memory_array_handle = 0x1000;
392
+ set_field_with_default(17, total_width, 64);
393
+ set_field_with_default(17, data_width, 64);
394
+ /* TODO: should assert in case something is wrong ASSERT((memory_size_mb & ~0x7fff) == 0); */
395
+ p->size = size_mb;
396
+ set_field_with_default(17, form_factor, 0x09); /* DIMM */
397
+ p->device_set = 0;
398
+
399
+ size = get_field(17, offsetof(struct smbios_type_17, device_locator_str),
400
+ name);
401
+ if (size)
402
+ snprintf(name + size - 1, sizeof(name) - size, "%d", instance);
403
+ else
404
+ snprintf(name, sizeof(name), "DIMM %d", instance);
405
+
406
+ memcpy(end, name, strlen(name) + 1);
407
+ end += strlen(name) + 1;
408
+ p->device_locator_str = ++str_index;
409
+
410
+ load_str_field_or_skip(17, bank_locator_str);
411
+ set_field_with_default(17, memory_type, 0x07); /* RAM */
412
+ set_field_with_default(17, type_detail, 0);
413
+
414
+ *end = 0;
415
+ end++;
416
+ if (!str_index) {
417
+ *end = 0;
418
+ end++;
419
+ }
420
+
421
+ return end;
422
+ }
423
+
424
+ /* Type 19 -- Memory Array Mapped Address */
425
+ static void *
426
+ smbios_init_type_19(void *start, u32 start_mb, u32 size_mb, int instance)
427
+ {
428
+ struct smbios_type_19 *p = (struct smbios_type_19 *)start;
429
+
430
+ p->header.type = 19;
431
+ p->header.length = sizeof(struct smbios_type_19);
432
+ p->header.handle = 0x1300 + instance;
433
+
434
+ p->starting_address = start_mb << 10;
435
+ p->ending_address = p->starting_address + (size_mb << 10) - 1;
436
+ p->memory_array_handle = 0x1000;
437
+ p->partition_width = 1;
438
+
439
+ start += sizeof(struct smbios_type_19);
440
+ *((u16 *)start) = 0;
441
+
442
+ return start + 2;
443
+ }
444
+
445
+ /* Type 20 -- Memory Device Mapped Address */
446
+ static void *
447
+ smbios_init_type_20(void *start, u32 start_mb, u32 size_mb, int instance,
448
+ int dev_handle, int array_handle)
449
+ {
450
+ struct smbios_type_20 *p = (struct smbios_type_20 *)start;
451
+
452
+ p->header.type = 20;
453
+ p->header.length = sizeof(struct smbios_type_20);
454
+ p->header.handle = 0x1400 + instance;
455
+
456
+ p->starting_address = start_mb << 10;
457
+ p->ending_address = p->starting_address + (size_mb << 10) - 1;
458
+ p->memory_device_handle = 0x1100 + dev_handle;
459
+ p->memory_array_mapped_address_handle = 0x1300 + array_handle;
460
+ p->partition_row_position = 1;
461
+ p->interleave_position = 0;
462
+ p->interleaved_data_depth = 0;
463
+
464
+ start += sizeof(struct smbios_type_20);
465
+
466
+ *((u16 *)start) = 0;
467
+ return start+2;
468
+ }
469
+
470
+ /* Type 32 -- System Boot Information */
471
+ static void *
472
+ smbios_init_type_32(void *start)
473
+ {
474
+ struct smbios_type_32 *p = (struct smbios_type_32 *)start;
475
+
476
+ p->header.type = 32;
477
+ p->header.length = sizeof(struct smbios_type_32);
478
+ p->header.handle = 0x2000;
479
+ memset(p->reserved, 0, 6);
480
+ set_field_with_default(32, boot_status, 0); /* no errors detected */
481
+
482
+ start += sizeof(struct smbios_type_32);
483
+ *((u16 *)start) = 0;
484
+
485
+ return start+2;
486
+ }
487
+
488
+ /* Type 127 -- End of Table */
489
+ static void *
490
+ smbios_init_type_127(void *start)
491
+ {
492
+ struct smbios_type_127 *p = (struct smbios_type_127 *)start;
493
+
494
+ p->header.type = 127;
495
+ p->header.length = sizeof(struct smbios_type_127);
496
+ p->header.handle = 0x7f00;
497
+
498
+ start += sizeof(struct smbios_type_127);
499
+ *((u16 *)start) = 0;
500
+
501
+ return start + 2;
502
+ }
503
+
504
+ #define TEMPSMBIOSSIZE (32 * 1024)
505
+
506
+ void
507
+ smbios_legacy_setup(void)
508
+ {
509
+ if (! CONFIG_SMBIOS)
510
+ return;
511
+
512
+ dprintf(3, "init SMBIOS tables\n");
513
+
514
+ char *start = malloc_tmphigh(TEMPSMBIOSSIZE);
515
+ if (! start) {
516
+ warn_noalloc();
517
+ return;
518
+ }
519
+ memset(start, 0, TEMPSMBIOSSIZE);
520
+
521
+ u32 nr_structs = 0, max_struct_size = 0;
522
+ char *q, *p = start;
523
+ char *end = start + TEMPSMBIOSSIZE - sizeof(struct smbios_type_127);
524
+
525
+ #define add_struct(type, args...) \
526
+ do { \
527
+ if (!get_external(type, &p, &nr_structs, &max_struct_size, end)) { \
528
+ q = smbios_init_type_##type(args); \
529
+ nr_structs++; \
530
+ if ((q - p) > max_struct_size) \
531
+ max_struct_size = q - p; \
532
+ p = q; \
533
+ } \
534
+ } while (0)
535
+
536
+ add_struct(0, p);
537
+ add_struct(1, p);
538
+ add_struct(3, p);
539
+
540
+ int cpu_num;
541
+ for (cpu_num = 1; cpu_num <= MaxCountCPUs; cpu_num++)
542
+ add_struct(4, p, cpu_num);
543
+
544
+ int ram_mb = (RamSize + RamSizeOver4G) >> 20;
545
+ int nr_mem_devs = (ram_mb + 0x3fff) >> 14;
546
+ add_struct(16, p, ram_mb, nr_mem_devs);
547
+
548
+ int i, j;
549
+ for (i = 0; i < nr_mem_devs; i++) {
550
+ u32 dev_mb = ((i == (nr_mem_devs - 1))
551
+ ? (((ram_mb - 1) & 0x3fff) + 1)
552
+ : 16384);
553
+ add_struct(17, p, dev_mb, i);
554
+ }
555
+
556
+ add_struct(19, p, 0, RamSize >> 20, 0);
557
+ if (RamSizeOver4G)
558
+ add_struct(19, p, 4096, RamSizeOver4G >> 20, 1);
559
+
560
+ add_struct(20, p, 0, RamSize >> 20, 0, 0, 0);
561
+ if (RamSizeOver4G) {
562
+ u32 start_mb = 4096;
563
+ for (j = 1, i = 0; i < nr_mem_devs; i++, j++) {
564
+ u32 dev_mb = ((i == (nr_mem_devs - 1))
565
+ ? (((ram_mb - 1) & 0x3fff) + 1)
566
+ : 16384);
567
+ if (i == 0)
568
+ dev_mb -= RamSize >> 20;
569
+
570
+ add_struct(20, p, start_mb, dev_mb, j, i, 1);
571
+ start_mb += dev_mb;
572
+ }
573
+ }
574
+
575
+ add_struct(32, p);
576
+ /* Add any remaining provided entries before the end marker */
577
+ for (i = 0; i < 256; i++)
578
+ get_external(i, &p, &nr_structs, &max_struct_size, end);
579
+ add_struct(127, p);
580
+
581
+ #undef add_struct
582
+
583
+ smbios_entry_point_setup(max_struct_size, p - start, start, nr_structs);
584
+ free(start);
585
+ }