Commit Graph

616 Commits

Author SHA1 Message Date
Volker Ruppert 536f9ba094 Some work on the i440BX chipset AGP support in the Bochs BIOS.
- rombios.c: return maximum bus number #1 for i440BX.
- Now using different i/o and memory base address regions for PCI and AGP.
- Added some init code for the i440BX PCI/AGP bridge.
- Some code cleanups.
2018-05-03 17:54:31 +00:00
Volker Ruppert 92ce5c3846 Moved PIR table modification for the i440BX chipset from the memory code to the
BIOS init code and some related fixes and cleanups.
2018-05-01 07:05:28 +00:00
Volker Ruppert e526d6c9d7 Moved PIR table modification for the i440BX chipset from the memory code to the
BIOS init code and some related fixes and cleanups.
2018-05-01 07:04:43 +00:00
Volker Ruppert e781a8f998 Some PCI IRQ roouting changes for i440BX chipset support.
- Bochs BIOS: Improved calculating PCI slot number from device number to handle
  the i440BX case correctly.
- Memory code: Detect and modify the PCI IRQ roouting table of the Bochs BIOS
  for the i440BX chipset (TODO: this could be done by the BIOS itself after
  copying to shadow RAM).
2018-04-29 16:22:44 +00:00
Volker Ruppert eeefe369d7 Some PCI IRQ roouting changes for i440BX chipset support.
- Bochs BIOS: Improved calculating PCI slot number from device number to handle
  the i440BX case correctly.
- Memory code: Detect and modify the PCI IRQ roouting table of the Bochs BIOS
  for the i440BX chipset (TODO: this could be done by the BIOS itself after
  copying to shadow RAM).
2018-04-29 16:20:58 +00:00
Volker Ruppert 69be05b2b5 Started preparing the Bochs BIOS for i440BX chipset support.
- Added symbols for the i440BX host bridge device ID.
- Probe and search for devices on PCI bus #1 (AGP).
- Set up memory and i/o regions only for header type 0.
- Set AGP aperture size to 64 MB.
- TODO: PCI IRQ routing, i440BX specific register setup.
2018-04-24 21:30:31 +00:00
Volker Ruppert 00ac6013f0 Started preparing the Bochs BIOS for i440BX chipset support.
- Added symbols for the i440BX host bridge device ID.
- Probe and search for devices on PCI bus #1 (AGP).
- Set up memory and i/o regions only for header type 0.
- Set AGP aperture size to 64 MB.
- TODO: PCI IRQ routing, i440BX specific register setup.
2018-04-24 21:29:41 +00:00
Volker Ruppert 776e8270f6 Started preparing Bochs BIOS for the sector size option.
- Function ata_cmd_data_io: using fixed block size 512 only for 'identify'
  commands. For read/write commands the hard disk sector size must be used.
- Take account of sector size when calculating hard disk size in MBytes (TODO:
  calculation is not correct for not yet existing very big disks).
- updated comment.
2018-04-05 21:35:41 +00:00
Volker Ruppert 6739601a52 Started preparing Bochs BIOS for the sector size option.
- Function ata_cmd_data_io: using fixed block size 512 only for 'identify'
  commands. For read/write commands the hard disk sector size must be used.
- Take account of sector size when calculating hard disk size in MBytes (TODO:
  calculation is not correct for not yet existing very big disks).
- updated comment.
2018-04-05 21:35:24 +00:00
Volker Ruppert 82f45f262a Small addition for the plug&play BIOS stub: added support for function 0x0000
(currently returning 0 for number of device nodes).
2018-01-28 11:59:29 +00:00
Volker Ruppert 38c3d80bb7 Small addition for the plug&play BIOS stub: added support for function 0x0000
(currently returning 0 for number of device nodes).
2018-01-28 11:59:13 +00:00
Volker Ruppert 80325ccd3e LGPL'd VGABIOS updated from CVS (VESA extension 'read EDID' for Bochs VBE
and Cirrus added).
2018-01-26 16:28:29 +00:00
Volker Ruppert e5370fa2ac Regenerated configure script and recompiled BIOS for HPET support. 2017-04-17 07:28:22 +00:00
Volker Ruppert 1d27d67ccd Added initial version of the High Precision Event Timer (HPET) ported from Qemu.
- Created framework based on our I/O APIC code and ported HPET core from Qemu
  with some required changes for the Bochs timer and IRQ handling.
- Enabled HPET-specific code in the ACPI and rombios32 sources and generated
  new ACPI table with iasl.
- The HPET device plugin is now always loaded if the i440FX chipset is selected
  (same as ACPI). We have to rethink this when we have implemented a more
  modern chipset.
- TODO: Rewrite of the virtual timer code for nanosecond support to make the
  realtime synchronization possible with HPET.
2017-04-17 07:26:00 +00:00
Volker Ruppert 9b0abda1f5 Recompiled after MP table fix. 2017-03-02 18:39:35 +00:00
Volker Ruppert 3fe496a3ff Fixed MP config table entry count and added some comments. 2017-03-02 18:38:48 +00:00
Volker Ruppert 67896c66ae Recompiled after adding "fastboot" option. 2017-02-16 21:45:07 +00:00
Volker Ruppert a53b99f5e1 Implemented Bochs BIOS option "fastboot" for skipping the boot menu delay.
Prepared "biosdetect" option in the harddrv code.
TODO #1: Add support for a comma-separated list of BIOS options.
TODO #2: Implement support for at least "biosdetect=none" in the Bochs BIOS.
2017-02-16 21:43:52 +00:00
Volker Ruppert 35a19e4777 Fixed reading extended memory size from CMOS. 2017-02-11 08:53:17 +00:00
Volker Ruppert f2abe7c033 Fixed reading extended memory size from CMOS. 2017-02-11 08:53:00 +00:00
Volker Ruppert 02b6de6a61 Added byte/word reference macro to produce optimal code and understand
(SF patch #533 by Yeong-uk Jo).
2017-02-10 18:29:00 +00:00
Volker Ruppert 5c50ae9ccc Added byte/word reference macro to produce optimal code and understand
(SF patch #533 by Yeong-uk Jo).
2017-02-10 18:28:34 +00:00
Volker Ruppert dca964c119 Some 8-bit register reference macro changes to produce more effective code
(SF patch #532 by Yeong-uk Jo).
2016-03-17 17:14:43 +00:00
Volker Ruppert e7587d25a4 Some 8-bit register reference macro changes to produce more effective code
(SF patch #532 by Yeong-uk Jo).
2016-03-17 17:14:27 +00:00
Volker Ruppert 56a7b11ab5 Align PCI memory regions at 64k boundary to make Bochs memory handlers work
correctly (registering small MMIO regions of USB controllers could fail otherwise).
2015-11-02 17:00:24 +00:00
Volker Ruppert 8df02880f8 Align PCI memory regions at 64k boundary to make Bochs memory handlers work
correctly (registering small MMIO regions of USB controllers could fail otherwise).
2015-11-02 16:59:50 +00:00
Volker Ruppert f7726990f2 Fixed MTRR setup for memory size > 4 GB. 2015-08-22 06:19:13 +00:00
Volker Ruppert 22c674ef7a Fixed MTRR setup for memory size > 4 GB. 2015-08-22 06:18:38 +00:00
Volker Ruppert 9596717f3c Fixed MTRR setup for memory size > 4 GB. 2015-08-22 06:17:39 +00:00
Volker Ruppert f8264a7b38 The RSDT table may be detected incorrectly within the rombios32 string table.
Split copying signature and the check for in to parts to fix this ACPI issue.
2015-04-18 13:19:21 +00:00
Volker Ruppert f169c68174 The RSDT table may be detected incorrectly within the rombios32 string table.
Split copying signature and the check for in to parts to fix this ACPI issue.
2015-04-18 13:18:01 +00:00
Stanislav Shwartsman 055da948a0 fixed problems found by cppcheck tool (patch by Maxim Derbasov) - second round 2015-01-07 16:17:40 +00:00
Volker Ruppert d01a6176a8 Fixed keyboard scancode processing after keyboard intercept using stack
manipulation (SF bug report #1193).
2014-12-26 10:32:26 +00:00
Volker Ruppert 4cd8b284c0 Fixed keyboard scancode processing after keyboard intercept using stack
manipulation (SF bug report #1193).
2014-12-26 10:31:39 +00:00
Volker Ruppert 3ce9f04329 Update copyright notice in the header of some remaining files 2014-07-10 11:14:49 +00:00
Volker Ruppert 366bbbba75 Fixed int74_function() for 4-byte (wheel mouse) packets.
Updated year and copyright.
2014-07-10 07:29:18 +00:00
Volker Ruppert b9a1b42ea8 Fixed int74_function() for 4-byte (wheel mouse) packets.
Updated year and copyright.
2014-07-10 07:28:59 +00:00
Volker Ruppert 2e2f6f8b5c LGPL'd VGABIOS updated from CVS (fixed building VBE modes list) 2014-07-09 07:10:18 +00:00
Stanislav Shwartsman 57d8fefee9 add seabios readme file with credits, links and licence 2014-06-06 18:45:11 +00:00
Stanislav Shwartsman d0803a7aab add compiled seabios 1.7.5 image into Bochs tree along with Bochs bios images. Confirmed that seabios 1.7.5 image works with current Bochs version 2014-06-04 20:16:20 +00:00
Volker Ruppert f94f6967d2 Updated LGPL'd VGABIOS to current CVS (no functional changes) 2014-05-31 06:37:21 +00:00
Volker Ruppert 323aa782e0 Fixed $PCI service detection 2013-08-02 16:00:10 +00:00
Volker Ruppert c4174b4691 Fixed $PCI service detection 2013-08-02 15:59:49 +00:00
Volker Ruppert 0658109479 Recompiled after PS/2 mouse function change 2013-06-15 21:49:10 +00:00
Volker Ruppert 53cb107dbf PS/2 mouse function: allow setting mouse packet size to 4 for wheel support
TODO: make driver CTMOUSE.EXE also work with mouse type 'serial_wheel'
2013-06-15 21:48:23 +00:00
Stanislav Shwartsman 05c711b2b5 Create initial interrupt vector offsets. Change based on sf patch #507. 2013-04-21 20:09:49 +00:00
Stanislav Shwartsman 77cd8f862d Move BIOS_COPYRIGHT_STRING to gain space at 0xfef3. Sebastian 2013-01-08 18:12:14 +00:00
Stanislav Shwartsman df7ba90704 Set INT vector 77h and below to dummy iret handler.
Change based on sf patch #507.

Sebastian
2012-12-31 06:33:01 +00:00
Stanislav Shwartsman 7efd6866ce Set int vector 1Fh to zero; Character Font for upper 128 characters is not available. Sebastian 2012-11-23 20:16:19 +00:00
Volker Ruppert e415cb9db8 recompiled after PCI changes 2012-11-11 09:10:28 +00:00
Volker Ruppert cc56245407 started implementing the i430FX chipset
- renamed config parameter "i440fx_support" to "enabled"
- new config parameter "chipset" added (current choices "i430FX" and "i440FX")
- don't load ACPI support if the i430FX chipset is selected
- select register values for the core PCI devices depending on the chipset
- USB UHCI must be connected to a PCI slot if the i430FX chipset is used
- rombios changes to make the i430FX chipset work
- TODO #1: implement limitation to 1 cpu and 128 MB RAM for the i430FX chipset
- TODO #2: verify register behaviour of both chipsets
2012-11-11 08:11:17 +00:00
Stanislav Shwartsman b9d3d3f3cd Set INT vector 1Dh to zero; MDA/CGA Video Parameter Table is not available. 2012-11-05 11:10:07 +00:00
Volker Ruppert 6cc92b1e2c recompiled after ACPI changes 2012-11-04 18:25:54 +00:00
Volker Ruppert 58b94d8f32 applied two old ACPI BIOS patches for Debian by Avi Kivity
- use preprocessor for pci link routing
- add 26 pci slots, bringing the total to 32
2012-11-04 18:21:06 +00:00
Volker Ruppert 45a7020f5d recompiled BIOS after latest changes 2012-10-28 19:41:04 +00:00
Stanislav Shwartsman a9396c3ffc Set INT vector 78h and above to zero; AWARD BIOS does this. Change based on sf patch #507. 2012-10-28 18:34:01 +00:00
Volker Ruppert 78e29cc7eb - recompiled after latest changes 2012-10-27 06:40:21 +00:00
Stanislav Shwartsman d43bf74aa3 post_init_ivt change based on sf patch #3567829 2012-10-16 10:39:52 +00:00
Stanislav Shwartsman 75908a2985 add comment 2012-10-14 15:58:10 +00:00
Stanislav Shwartsman 0ee8af67c3 Partial undo of sf patch #3540389 to keep more "natural" argument order.
Sebastian
2012-10-01 20:41:11 +00:00
Volker Ruppert ce3228eeda - recompiled for release 2012-08-21 21:03:22 +00:00
Stanislav Shwartsman 882e07518e fixed comments 2012-08-06 17:59:54 +00:00
Stanislav Shwartsman df3b61e3a9 typo fix 2012-08-02 14:37:17 +00:00
Stanislav Shwartsman abaad74fc9 trivial optimization - part of pacthes from Yeong-uk Jo 2012-08-01 16:11:20 +00:00
Stanislav Shwartsman a7c8d38871 Re-add lost comments in floppy_media_sense 2012-07-25 19:49:35 +00:00
Stanislav Shwartsman eb9616024f Use ASM comment marks 2012-07-23 16:11:24 +00:00
Stanislav Shwartsman b57ace2579 Merged a side note patch by Sebastian
[Bochs-developers] [Patch #3539228] Part 3

> Added dummy EOI handler and all unused IRQ vectors set to this.QEMM 97 does not crash any more.

Looks good. Those "SET_INT_VECTOR comments" should be removed.

Sebastian
2012-07-19 19:36:44 +00:00
Stanislav Shwartsman 5afe0cbb48 use constant instead of magic value 2012-07-17 19:58:00 +00:00
Volker Ruppert 53438e92c6 - fixes based on Debian patches by Guillem Jover
- set SHELL variable with configure script
  - add '--tag CXX' argument to libtool calls
2012-07-14 07:01:43 +00:00
Stanislav Shwartsman 24edf649eb added comments in BIOS code 2012-07-11 19:16:23 +00:00
Volker Ruppert 3c707ee976 - recompiled after patch #5 2012-07-10 18:33:52 +00:00
Volker Ruppert 926900739f - rombios patch #5 by greatpsycho
- Changed memory reference functions argument order to suitable for use
    LDS/LES instructions.
2012-07-10 18:33:09 +00:00
Volker Ruppert 625991504b - recompiled after patch #4 2012-07-10 18:31:10 +00:00
Volker Ruppert 433fc25a88 - rombios patch #4 by greatpsycho
- Added SS based reference helper function and changed SS based refer to use
    this functions.
2012-07-10 18:30:17 +00:00
Volker Ruppert f0c3b2ad90 - recompiled after patch #3 2012-07-10 18:28:56 +00:00
Volker Ruppert 7b07d3287a - rombios patch #3 by greatpsycho
- Changed to frequently using segment base to DS based - Added set_DS function
    (Set DS value,returns old DS value),(read/write)_(byte/word/dword)_DS macro
    to refer DS segment based data.
  - Almost BIOS interrupt handler wrapper changed to DS base to use DS-based
    reference macro effectiently.
2012-07-10 18:28:14 +00:00
Volker Ruppert 4f2b643aca - recompiled after patch #2 2012-07-10 18:26:45 +00:00
Volker Ruppert 6267fd7e9d - rombios patch #2 by greatpsycho
- Merged ata_cmd_data_in and ata_cmd_data_out function to ata_cmd_data_io
  - Merged INT13 AH=02 and AH=03 I/O routine
  - Modified cdrom_boot,int15_function,set_e820_range and pci/pnobios low level code to more optimal
  - Deleted INT1C handler that duplicated with dummy_iret_handler
2012-07-10 18:26:01 +00:00
Volker Ruppert 748315591c - recompiled BIOS after patch #1 2012-07-10 18:22:57 +00:00
Volker Ruppert 82ebbbdd0b - rombios patch #1 by greatpsycho. This compatibility patch includes:
- Added dummy EOI handler and all unused IRQ vectors set to this.QEMM 97 does not crash any more.
  - Changed INT15 AH=80,81,82,90,91 functions to return success.
  - Added INT71(IRQ9 - Redirect to IRQ2) handler.
  - Some IRQ handlers call INT15 with AH=91.
  - INT16 handler calls INT15 with AX=9002.
  - Fixed IRQ14 handler that overwrites 40:8F to 00
2012-07-10 18:21:51 +00:00
Volker Ruppert 9ead528c5a - recompiled after latest changes 2012-06-28 15:20:15 +00:00
Stanislav Shwartsman 2e9f5570d9 SF BOS patches:
- Basic low-level function optimization
- Optimization of bios_printf() and removal of put_int()
- Optimization of timer_tick_post
2012-06-28 11:02:39 +00:00
Volker Ruppert 4e95f44873 - added missing MADT interrupt source override and fixed MP table
(patches by Sebastian Herbszt)
2012-05-13 20:07:32 +00:00
Volker Ruppert 7b51b829f5 - added missing MADT interrupt source override and fixed MP table
(patches by Sebastian Herbszt)
2012-05-13 20:06:51 +00:00
Volker Ruppert f4efb6f248 - discard "eh_frame" (compilation fix from Debian patches) 2012-05-12 22:25:09 +00:00
Stanislav Shwartsman 55e21bedcb fixed possible rombios bug - according to comment in Bochs-Devs mailing list by David Laight 2012-05-06 19:36:41 +00:00
Volker Ruppert bfa3a14265 - PCI ROM handling fixes
- fixed tmpsize (patch by Sebastian Herbszt)
  - disable PCI ROM access after copying to shadow RAM (same as SeaBIOS)
2011-12-22 07:53:51 +00:00
Volker Ruppert 40052509d2 - PCI ROM handling fixes
- fixed tmpsize (patch by Sebastian Herbszt)
  - disable PCI ROM access after copying to shadow RAM (same as SeaBIOS)
2011-12-22 07:53:25 +00:00
Volker Ruppert e38772006f - added PCI ROM init code that copies to shadow RAM and use it for both VGA
and other boot ROMs
- define and use PCI constants (patch by Sebastian Herbszt)
2011-12-20 19:34:47 +00:00
Volker Ruppert 46d5caa98d - added PCI ROM init code that copies to shadow RAM and use it for both VGA
and other boot ROMs
- define and use PCI constants (patch by Sebastian Herbszt)
2011-12-20 19:34:05 +00:00
Volker Ruppert f66a04e7d1 - recompiled BIOS images 2011-11-24 17:24:05 +00:00
Stanislav Shwartsman f09bdf353a RDMSR can also read TSC so make it end-of-trace as well (same as RDTSC) 2011-11-24 16:03:51 +00:00
Volker Ruppert 42e571ab1b - fix package size in pointing device flags 2 (SF patch #3435049)
- implemented legacy BIOS int13 AL=17/18h diskette functions (patch taken from
  comment to SF feature request #3424738)
2011-11-19 12:38:41 +00:00
Volker Ruppert e247b0f14d - fix package size in pointing device flags 2 (SF patch #3435049)
- implemented legacy BIOS int13 AL=17/18h diskette functions (patch taken from
  comment to SF feature request #3424738)
2011-11-19 12:38:12 +00:00
Volker Ruppert 0d4392fc13 - updated LGPL'd VGABIOS to version 0.7a 2011-10-30 17:03:09 +00:00
Stanislav Shwartsman 01dbcff569 Support ctrl-alt-del for reboot by Sebastian 2011-08-16 17:54:44 +00:00
Volker Ruppert 83f0e388c5 - recompiled after latest changes 2011-08-15 06:25:51 +00:00
Stanislav Shwartsman 7feb947830 BIOS fixes 2011-08-15 06:05:52 +00:00
Volker Ruppert 5a1cd21ca9 - added PCI ROM support to the Bochs BIOS (works with both pcivga and cirrus)
- scan for VGABIOS ROM after rombios32 init
  - copy PCI ROM to shadow RAM at 0xc0000 and enable it
  - NOTE: this feature does not work with BIOS-bochs-legacy, so we should recommend to use the
    default BIOS for PCI display adapters
  - TODO: load VGABIOS ROM from the vga code instead of main.cc if PCI is disabled
2011-07-03 08:12:48 +00:00
Volker Ruppert 4ce12047a9 - added PCI ROM support to the Bochs BIOS (works with both pcivga and cirrus)
- scan for VGABIOS ROM after rombios32 init
  - copy PCI ROM to shadow RAM at 0xc0000 and enable it
  - NOTE: this feature does not work with BIOS-bochs-legacy, so we should recommend to use the
    default BIOS for PCI display adapters
  - TODO: load VGABIOS ROM from the vga code instead of main.cc if PCI is disabled
2011-07-03 08:10:16 +00:00