Commit Graph

68 Commits

Author SHA1 Message Date
Volker Ruppert
11c81a46eb - temporary PCI IRQ initialisation fixed (should be done by the PCI BIOS) 2004-09-10 11:54:46 +00:00
Volker Ruppert
8d585dc813 - removed lowlevel includes from iodev.h and device headers to reduce dependencies
- fixed some warnings
2004-09-05 10:30:19 +00:00
Volker Ruppert
d06c80cee3 - changed all iodev config macros to BX_SUPPORT_xxx
- removed incorrect SDL/ prefix from include paths (patch from Robin KAY)
2004-08-06 15:49:55 +00:00
Volker Ruppert
1c3d8436c6 - compilation fixes for ne2k with pci disabled (patch from suzu) 2004-07-26 16:04:31 +00:00
Volker Ruppert
c9a113d623 - new functions for pci base address handling for memory and i/o space 2004-07-11 20:38:48 +00:00
Volker Ruppert
c6834907ad - pci irq routing fixed and initialization added (BUG: ne2k-pci only works with
irq 11 in Win95)
- bios: irq routing table fixed and updated for 5 slots
- ne2k: unnecessary reset call in init() removed
- usb: don't execute reset if disabled
2004-07-04 17:10:05 +00:00
Volker Ruppert
8edad22893 - pci irq routing implemented (used by ne2k-pci)
- ne2k: fixed word writes to page 0 reg 0x0f
2004-07-01 22:18:20 +00:00
Volker Ruppert
ae180cc46a - pci slot register mechanism added
* up to 5 slots can be specified with the 'i440fxsupport' config option
  * the pci slot number are hardwired to pci device numbers
  * the 'devfunc' value is returned the calling device (useful for multi-function
    devices)
  * the core of the i440FX chipset is hardwired to pci device 1 + 2; usb is still
    optional and appears at device 1, function 2
- ne2k: enable pci features if connected to a pci slot
- ne2k: asic data port supports 32-bit access if ne2k-pci is active
- pci2isa: improved error messages for ELCR1 and ELCR2
2004-06-29 19:24:34 +00:00
Volker Ruppert
2b16344b70 - NE2000 PCI support added (device appears as a RealTec 8029)
* PCI initialization and configuration space handling added
  * ASIC data port now supports 32-bit r/w if PCI is present
  * PCI device will be enabled if the requested base address is >= 0x1000
- ne2k: 8390 command register is now present on all pages
- ne2k: some panics changed to errors, debug messages improved
- PCI host bridge is now a core plugin (if enabled) and initialized earlier
2004-06-27 18:23:00 +00:00
Stanislav Shwartsman
5873b26a82 Speed up compilation process.
bochs.h already not include iodev.h which reduces compilation dependences for almost all cpu and fpu files, now cpu files will not be recompiled if iodev includes was changed
2004-06-19 15:20:15 +00:00
Christophe Bothamy
381d2ce460 - apply [ 903465 ] SEGV in iodev/ne2k.cc line 1211 on Alpha architecture by Christian Lestrade 2004-05-01 14:05:07 +00:00
Volker Ruppert
c1808b14f4 - allow 16 bit writes to page 0 (patch from Kenneth Stailey) 2004-01-19 17:53:53 +00:00
Volker Ruppert
b7767cc6ee - DCR loopback bit fixed: bit 3 clear means loopback mode, so subtracting 8 was
wrong. Now the bits are working right, but loopback is still not present.
- loopback should be active if DCR is in loopback mode and TCR loop mode is > 0
- reading the FIFO is only valid in loopback mode (causes a BX_ERROR for now)
2003-12-25 16:58:17 +00:00
Volker Ruppert
ca60988fd9 - wx: NetConfigDialog replaced by a new version using ParamDialog
- parameter for the ethernet module must be of type bx_param_enum_c, since we
  have a list of valid modules
2003-08-25 16:46:18 +00:00
Volker Ruppert
bcdcf42bdd - io_len mask in i/o register functions implemented (1 = 8bit, 2 = 16bit, 4 = 32bit).
Unallowed cases are now handled in devices.cc and cause a BX_ERROR.
- io_len mask fixed and unnecessary io_len checks removed in
  * devices.cc
  * extfpuirq.cc
  * gameport.cc
  * ne2k.cc
  * pit.cc
  * pit_wrap.cc (i/o register function calls replaced by DEV_* macro calls)
- TODO: implement this in all other devices
2003-07-31 12:04:48 +00:00
Volker Ruppert
c496962184 - the NE2000 driver for MS-DOS writes a 16 bit value to page 0 reg 5. Now the
low-byte is written to this register and the high-byte is ignored.
2003-07-30 10:45:13 +00:00
Volker Ruppert
d1652093ac - applied some parts of the patch from Andrew Zabolotny <zap@cobra.ru>
* changed all %ll format descriptions to FMT_LL macro so that
    Microsoft Visual C works correctly (it uses %I64)
  * missing type conversions added
  * cdrom.cc: variable types for win32 fixed
  * removed some unused variables in eth_win32.cc and harddrv.cc
  * added missing includes in make_cmos_image.c and niclist.c
2003-06-07 19:16:55 +00:00
Volker Ruppert
fb5d0a939d - hardware reset must be called after initializing everything else (bug found
with valgrind)
2003-05-24 10:50:19 +00:00
Gregory Alexander
a510ce56ee Add configurable option to never completely fill the buffer rings.
It's not clear what the correct behavior is in that case, (we
clearly don't currently handle it correctly) so
simply avoiding it is the easiest thing to do.  As such, this
option is ON by default.
2003-05-20 15:01:34 +00:00
Christophe Bothamy
ffb9fcf69e - fix ne2k to work with grub. The remote-DMA check defaults to a safe
value instead of silently rejecting it. (patch from Keir Fraser)
2003-04-26 14:07:58 +00:00
Christophe Bothamy
50efc3b8c7 - apply Conn Clark's patch.perf-regparm-cclark :
- it works only on x86 with gcc2.95+
  - uses the GCC function atribute "regparm(n)" to declare that certain
    functions use the register calling convention
  - performance improvement is about 6%
2003-03-02 23:59:12 +00:00
Bryce Denney
c5775cf076 - change "TCR write, reserved bits set" into an error instead of a panic.
This is happening in the debian image, but does not seem to affect
  operation of the NE2k at all.
2002-12-13 18:27:07 +00:00
Volker Ruppert
64b66e709e - converted ne2k device to a plugin
- moved ne2k presence check to devices.cc
- added special make rules for the ne2k and the lowlevel network support
- added macro for the debug feature of the ne2k
2002-11-19 18:56:39 +00:00
Bryce Denney
0a7cb3a43c - apply patch.ifdef-disabled-options. Comments from that patch are below:
For a whole lot of configure options, I put #if...#endif around code that
  is specific to the option, even in files which are normally only compiled
  when the option is on.  This allows me to create a MS Visual C++ 6.0
  workspace that supports many of these options.  The workspace will basically
  compile every file all the time, but the code for disabled options will
  be commented out by the #if...#endif.

  This may one day lead to simplification of the Makefiles and configure
  scripts, but for the moment I'm leaving Makefiles and configure scripts
  alone.

  Affected options:
    BX_SUPPORT_APIC (cpu/apic.cc)
    BX_SUPPORT_X86_64 (cpu/*64.cc)
    BX_DEBUGGER (debug/*)
    BX_DISASM (disasm/*)
    BX_WITH_nameofgui (gui/*)
    BX_SUPPORT_CDROM (iodev/cdrom.cc)
    BX_NE2K_SUPPORT (iodev/eth*.cc, iodev/ne2k.cc)
    BX_SUPPORT_APIC (iodev/ioapic.cc)
    BX_IODEBUG_SUPPORT (iodev/iodebug.cc)
    BX_PCI_SUPPORT (iodev/pci*.cc)
    BX_SUPPORT_SB16 (iodev/sb*.cc)

Modified Files:
  cpu/apic.cc cpu/arith64.cc cpu/ctrl_xfer64.cc
  cpu/data_xfer64.cc cpu/fetchdecode64.cc cpu/logical64.cc
  cpu/mult64.cc cpu/resolve64.cc cpu/shift64.cc cpu/stack64.cc
  debug/Makefile.in debug/crc.cc debug/dbg_main.cc debug/lexer.l
  debug/linux.cc debug/parser.c debug/parser.y
  disasm/dis_decode.cc disasm/dis_groups.cc gui/amigaos.cc
  gui/beos.cc gui/carbon.cc gui/macintosh.cc gui/rfb.cc
  gui/sdl.cc gui/term.cc gui/win32.cc gui/wx.cc gui/wxdialog.cc
  gui/wxmain.cc gui/x.cc iodev/cdrom.cc iodev/eth.cc
  iodev/eth_arpback.cc iodev/eth_fbsd.cc iodev/eth_linux.cc
  iodev/eth_null.cc iodev/eth_packetmaker.cc iodev/eth_tap.cc
  iodev/eth_tuntap.cc iodev/eth_win32.cc iodev/ioapic.cc
  iodev/iodebug.cc iodev/ne2k.cc iodev/pci.cc iodev/pci2isa.cc
  iodev/sb16.cc iodev/soundlnx.cc iodev/soundwin.cc
2002-11-19 05:47:45 +00:00
Volker Ruppert
35c2be5518 - changed ne2k presence options from "valid" to "present" 2002-11-18 17:16:07 +00:00
Peter Tattam
ac49ea2418 Patch to fix DOS based packet drivers that use an odd count for the NE2000
DMA.  Should print error message but allow to continue.  (bochs log will
show DMA underrun for the last byte transferred).
2002-10-30 11:11:26 +00:00
Bryce Denney
5e520261db Add plugin support to Bochs by merging all the changes from the
BRANCH_PLUGINS branch!

Authors:
  Bryce Denney
  Christophe Bothamy
  Kevin Lawton (we grabbed a lot of plugin code from plex86)
Testing help from:
  Volker Ruppert
  Don Becker (Psyon)
  Jeremy Parsons (Br'fin)

The change log is too long to paste in here.  To read the change log, do
  cvs log patches/patch.final-from-BRANCH_PLUGINS.gz

All the changes and a detailed description are contained in a patch
called patch.final-from-BRANCH_PLUGINS.gz.  To look at the complete
patch, do
  cvs upd -r1.1 patches/patch.final-from-BRANCH_PLUGINS.gz

Then you will have a local copy of the patch, which you can gunzip and
play with however you want.

Modified Files:
    .bochsrc Makefile.in aclocal.m4 bochs.h config.h.in configure
    configure.in gdbstub.cc logio.cc main.cc pc_system.cc
    pc_system.h state_file.h bios/Makefile.in bios/rombios.c
    cpu/Makefile.in cpu/access.cc cpu/apic.cc cpu/arith16.cc
    cpu/arith32.cc cpu/arith8.cc cpu/cpu.cc cpu/cpu.h
    cpu/ctrl_xfer32.cc cpu/exception.cc cpu/fetchdecode.cc
    cpu/fetchdecode64.cc cpu/flag_ctrl.cc cpu/flag_ctrl_pro.cc
    cpu/init.cc cpu/io.cc cpu/logical16.cc cpu/logical32.cc
    cpu/logical8.cc cpu/paging.cc cpu/proc_ctrl.cc
    cpu/protect_ctrl.cc cpu/segment_ctrl_pro.cc cpu/shift16.cc
    cpu/shift32.cc cpu/stack64.cc cpu/string.cc cpu/tasking.cc
    debug/Makefile.in debug/dbg_main.cc disasm/Makefile.in
    doc/docbook/user/user.dbk dynamic/Makefile.in fpu/Makefile.in
    gui/Makefile.in gui/amigaos.cc gui/beos.cc gui/carbon.cc
    gui/control.cc gui/control.h gui/gui.cc gui/gui.h
    gui/keymap.cc gui/keymap.h gui/macintosh.cc gui/nogui.cc
    gui/rfb.cc gui/sdl.cc gui/sdlkeys.h gui/siminterface.cc
    gui/siminterface.h gui/term.cc gui/win32.cc gui/wx.cc
    gui/wxdialog.cc gui/wxdialog.h gui/wxmain.cc gui/wxmain.h
    gui/x.cc gui/keymaps/sdl-pc-de.map gui/keymaps/sdl-pc-us.map
    gui/keymaps/x11-pc-de.map instrument/example0/instrument.h
    instrument/example1/instrument.h
    instrument/stubs/instrument.cc instrument/stubs/instrument.h
    iodev/Makefile.in iodev/biosdev.cc iodev/biosdev.h
    iodev/cdrom.cc iodev/cmos.cc iodev/cmos.h iodev/devices.cc
    iodev/dma.cc iodev/dma.h iodev/eth_fbsd.cc iodev/eth_linux.cc
    iodev/eth_null.cc iodev/eth_tap.cc iodev/floppy.cc
    iodev/floppy.h iodev/guest2host.cc iodev/guest2host.h
    iodev/harddrv.cc iodev/harddrv.h iodev/iodebug.cc
    iodev/iodebug.h iodev/iodev.h iodev/keyboard.cc
    iodev/keyboard.h iodev/ne2k.cc iodev/ne2k.h iodev/parallel.cc
    iodev/parallel.h iodev/pci.cc iodev/pci.h iodev/pci2isa.cc
    iodev/pci2isa.h iodev/pic.cc iodev/pic.h iodev/pit.cc
    iodev/pit.h iodev/pit_wrap.cc iodev/pit_wrap.h iodev/sb16.cc
    iodev/sb16.h iodev/scancodes.cc iodev/scancodes.h
    iodev/serial.cc iodev/serial.h iodev/slowdown_timer.cc
    iodev/slowdown_timer.h iodev/unmapped.cc iodev/unmapped.h
    iodev/vga.cc iodev/vga.h memory/Makefile.in memory/memory.cc
    memory/memory.h memory/misc_mem.cc misc/bximage.c
    misc/niclist.c
Added Files:
    README-plugins extplugin.h ltdl.c ltdl.h ltdlconf.h.in
    ltmain.sh plugin.cc plugin.h
2002-10-24 21:07:56 +00:00
Volker Ruppert
3b75ad3200 - function reset() clears the IRQ line 2002-10-19 08:21:24 +00:00
Volker Ruppert
75ba36cb15 - fixed some warnings at BX_INFO, BX_PANIC, BX_ERROR and BX_DEBUG 2002-10-06 19:38:54 +00:00
Bryce Denney
c818baa0c9 - modified every I/O device so that it will not re-register its timers
if init() is called a second time.  This allows me to restart a
  simulation (wxwindows interface only) without restarting the whole
  application.
- modified: iodev/*.cc
2002-10-06 19:04:47 +00:00
Kevin Lawton
83c9d266d0 Added a field on register_timer() so that a name identifying the
requesting source can be registered as well.  Otherwise, there
  is no way to know which source modules are requesting
  suspect frequencies which are too high.
2002-10-02 05:16:01 +00:00
Bryce Denney
d160c872b3 - in debugger, all output must now be printed with dbg_printf, instead
of fprintf to stderr
2002-09-15 11:20:11 +00:00
Bryce Denney
3f9155c050 - when the device is reset via control register, it is BX_RESET_SOFTWARE 2002-08-28 16:55:16 +00:00
Bryce Denney
7fdc7303c2 - add "void reset(unsigned type)" method to every I/O device.
Some devices already had one.  Some I had to add an empty one.
  I did a little cleaning of init() methods to make them more uniform
  but generally I left them alone.
- I also put these exact diffs into a patch "patch.iodev-add-reset"
  in case I want to revert these changes for some reason, for example
  if they break an old patch.  It should be deleted after a while.
2002-08-27 19:54:46 +00:00
Christophe Bothamy
117b099b54 - fix to have Bochs not panic when Win95 tries to detect devices 2002-05-03 13:52:53 +00:00
Bryce Denney
d85b0c113f - apply Peter Tattam's patch to fix a DMA bug. 2002-04-18 00:37:09 +00:00
Bryce Denney
6eea8f1bea - panic if the ethernet module cannot be found. If they continue, use
null module instead.
2002-03-09 01:05:41 +00:00
Bryce Denney
3a01642790 - add debug warning when you throw out small packets 2002-03-09 00:28:07 +00:00
Bryce Denney
6b11183d70 - the check for "auto transmit disable" was checking the wrong bit.
We should really be using #defines or enums to give these constants
  a proper name!  Thanks to Peter Tattam <peter@jazz-1.trumpet.com.au>
  for the bug report.
2002-03-08 08:33:37 +00:00
Volker Ruppert
ad072e2bc6 - implementation of the edge triggered IRQ mode
- new functions raise_irq() and lower_irq()
- all trigger_irq() / untrigger_irq() calls are replaced by the new functions
- REMARK: timer IRQ handling is not correct but it works
- TODO: IOAPIC IRQ handling needs to be changed
2002-01-29 17:20:12 +00:00
Volker Ruppert
70ac9ca440 - clear IRQ if no unmasked interrupts are pending 2002-01-25 20:31:00 +00:00
Volker Ruppert
f004e340e8 - asic_write: dma write size and remote bytes fixed (thanks to Mike Lerwill)
- read_handler: fixed a warning
2001-12-21 11:56:52 +00:00
Volker Ruppert
ecabb60da8 - chipmem read/write limit and dma write size fixed - Windows 95 driver works now 2001-12-20 19:44:16 +00:00
Todd T.Fries
25db9d70b3 this is from ece lca <ecelca@yahoo.com>:
I compiled Bochs on Linux and installed a linux
in it, but when I ping a machine on my LAN, I get
packet loss. Sometimes as much as 70% is lost.
So I read ne2k.cc, Linux 8390 driver and 8390 chip
specification. I find that 8390 command register START
bit is misused in ne2k.cc. According to the chip
specification, even if START=0, the chip does not stop
working.
2001-11-06 20:30:09 +00:00
Todd T.Fries
68309b59b6 fixes from Frode Vatvedt Fjeld. Thanks! 2001-11-06 17:14:34 +00:00
Bryce Denney
c90e548019 - avoid symbol conflict on DUPLICATE by renaming it to BX_DUPLICATE 2001-10-07 14:43:59 +00:00
Bryce Denney
daf2a9fb55 - add RCS Id to header of every file. This makes it easier to know what's
going on when someone sends in a modified file.
2001-10-03 13:10:38 +00:00
Todd T.Fries
d5ecddc64c a few output cleanups
make windows not panic bochs when probing for ne2k, still doesn't work though
2001-10-02 18:38:03 +00:00
Bryce Denney
a07d62fd24 - add "info ne2k" command to the debugger, which prints all the registers
of the NE2000 model.
2001-09-29 19:16:34 +00:00
Todd T.Fries
64ea80c050 more INFO->ERROR/DEBUG cleanups 2001-08-31 22:02:29 +00:00