Age | Commit message (Collapse) | Author | Files | Lines |
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Just swapping font "next-font" pointers breaks the sti driver on older 64-bit Linux
kernels which take the "next_font" pointer as unsigned int (instead of
signed int) and thus calculates a wrong font start address. Avoid the
crash by sorting the fonts in the STI ROM before the OS starts.
A Linux kernel patch to avoid the crash was added in kernel 6.7.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Is asked by ODE on C3700. Apparently PDC PAT version.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
This fixes ODE for C3700, which aparently tried to run with PSW.W=1
and failed.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
The OS needs to "unlock" the 64-bit functions.
This fixes the ODE tool to detect the mapper instead of mapper2 tool.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Fully implement device tree
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
This fixes the graphics output, but keyboard is still on serial only.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Hand over the architected MEM_PDC_ENTRY address (0x4800) instead of the
native address of pdc_entry() when providing the PDC entry point in the
SMP rendezvous function.
This fixes the 64-bit SMP boot, since it avoids the ldil instruction
which trashes he upper 32-bits.
Secondly, the linux kernel checks the provided value against the
PAGE0->mem_pdc value and complains if the differ.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
2004000160 for the B160L, and 2004003700 for the C3700.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
If SR-hasing is disabled, we need to return zero.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Implemented for memory only for now...
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
If user gives a sw_id, use it for all emulated CPUs.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
A minimal set of PDC PAT (PARISC-on-TAHOE, aka 64-bit PDC calls)
is needed to support booting a 64-bit PARISC kernel.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Need to implement 64-bit register save/restore before enabling this
option.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
When called from a 64-bit kernel, pdc_psw may be called with
PSW.W set, so save and restore it during the call.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
PDC_PSW tells the hardware how the default PSW is implemented.
The w field indicates the default width of the processor. The w field
also determines whether the External Interrupt Request (EIR) register is
treated as a right-justified 32-bit register or a full 64-bit register.
The e field indicates the default endianness of the processor. Both
bits determine how the PSW W-bit and E-bit will be set on an
interruption.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Use the wide version of mfctl to read the %sar register.
Only the w-version is able to detect if we run on a 64-bit CPU.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Enhancements:
- Initial support for 64-bit CPUs with Astro/Elroy (e.g. C3700
workstation)
- USB support (OHCI)
- better PCI support
- esp-scsi fixes from Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Major changes to support 64-bit machines with Astro and Elroy chips.
This patch adds support for the C3700 workstation.
Changes include:
- Detect if the emulated CPU runs as 32-bit PA1.x or 64-bit PA2.x CPU
- Add support for Astro and Elroy chips:
* build interrupt routing table (IRT)
* add PCI irq to pci_device struct
- Enhance PCI bus scanning
* Add support for various PCI cards (serial, USB, graphics, ...)
- Change PCI I/O accessor functions:
* readX()/writeX() do byteswapping and take an ioremapped address
* __raw_readX()/__raw_writeX() don't byteswap and take an ioremapped address.
* gsc_*() don't byteswap and operate on physical addresses
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
If some bug happens during early bootup, the mem_cons might not have
been initialized yet. In that case use default PARISC_SERIAL_CONSOLE
to show something.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
The existing esp-scsi state machine checks for the STAT_TC bit to exit state 1
but in the case where there is no data phase, a non-DMA command is executed
which doesn't set STAT_TC. This only works because QEMU currently always sets
STAT_TC just after issuing every SCSI command.
Update the esp-scsi state machine so that in the case where there is no data
phase, we immediately execute CMD_ICCS instead of waiting for STAT_TC to be
set which will never happen with a non-DMA CMD_SELATN command.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Message-ID: <20230807065300.366070-4-mark.cave-ayland@ilande.co.uk>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
The ESP SELATN command used to send SCSI commands from the ESP to the SCSI bus
is not a DMA command and therefore does not affect the STAT_TC bit. The only
reason this works at all is due to a bug in QEMU which (currently) always
updates the STAT_TC bit in ESP_RSTAT regardless of the state of the ESP_CMD_DMA
bit.
According to the NCR datasheet [1] the INTR_BS/INTR_FC bits are set when the
SELATN command has completed, so update the existing logic to check for these
bits in ESP_RINTR instead. Note that the read of ESP_RINTR needs to be
restricted to state == 0 as reading ESP_RINTR resets the ESP_RSTAT register
which breaks the STAT_TC check when state == 1.
This commit also includes an extra read of ESP_INTR to clear all the interrupt
bits before submitting the SELATN command to ensure that we don't accidentally
immediately progress to the data phase handling logic where ESP_RINTR bits have
already been set by a previous ESP command.
[1] "NCR 53C94, 53C95, 53C96 Advanced SCSI Controller"
NCR_53C94_53C95_53C96_Data_Sheet_Feb90.pdf
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Message-ID: <20230807065300.366070-3-mark.cave-ayland@ilande.co.uk>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
The ESP FIFO is used as a buffer for DMA requests and so isn't guaranteed to
be empty in the case of SCSI errors or a mixed DMA/non-DMA request. Flush the
FIFO before sending a SCSI command to guarantee that it is correctly
positioned at the start of the FIFO.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20230807065300.366070-2-mark.cave-ayland@ilande.co.uk>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
Enhancements:
- Support for Block-TLB (BTLB) on 32-bit CPUs
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
SeaBIOS has no information about the lower implementation details for
Block-TLB (or generic TLB) support, so it simply hands over the
parameters in the CPU registers provided by the operating system to the
PDC_BLOCK_TLB PDC function to QEMU.
Calling QEMU happens via a diagnostics instruction (diag 0x100) which
QEMU will respond to. Older QEMU versions without the BTLB support will
simply log that they ignored the diag instruction, and SeaBIOS will
return PDC_BAD_OPTION for this PDC call in that case.
Signed-off-by: Helge Deller <deller@gmx.de>
|