1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2026-01-15 12:51:00 +00:00
serenity/Kernel/Arch
Liav A 252c92d565 Kernel/Graphics: Introduce support for QEMU isa-vga device
This device is supposed to be used in microvm and ISA-PC machine types,
and we assume that if we are able to probe for the QEMU BGA version of
0xB0C5, then we have an existing ISA Bochs VGA adapter to utilize.
To ensure we don't instantiate the driver for non isa-vga devices, we
try to ensure that PCI is disabled because hardware IO test probe failed
so we can be sure that we use this special handling code only in the
QEMU microvm and ISA-PC machine types. Unfortunately, this means that if
for some reason the isa-vga device is attached for the i440FX or Q35
machine types, we simply are not able to drive the device in such setups
at all.

To determine the amount of VRAM being available, we read VBE register at
offset 0xA. That register holds the amount of VRAM divided by 64K, so we
need to multiply the value in our code to use the actual VRAM size value
again.

The isa-vga device requires us to hardcode the framebuffer physical
address to 0xE0000000, and that address is not expected to change in the
future as many other projects rely on the isa-vga framebuffer to be
present at that physical memory address.
2022-09-20 19:05:13 +01:00
..
aarch64 Kernel: Abstract platform-specific serial port access from kprintf 2022-09-20 18:43:05 +01:00
x86 Kernel/Graphics: Introduce support for QEMU isa-vga device 2022-09-20 19:05:13 +01:00
CPU.h Kernel: Make handle_crash available to aarch64 2022-04-02 19:34:20 -07:00
DebugOutput.h Kernel: Abstract platform-specific serial port access from kprintf 2022-09-20 18:43:05 +01:00
DeferredCallEntry.h Kernel: Extract DeferredCallEntry from Arch/Processor.h 2021-12-11 13:23:27 -08:00
Delay.h Kernel: Move IO delay code to x86 architecture subdirectory 2022-09-20 18:43:05 +01:00
InterruptDisabler.h Kernel: Implement InterruptDisabler using generic Processor functions 2022-06-02 13:14:12 +01:00
InterruptManagement.h Kernel: Move IRQController and InterruptManagement to Arch directory 2022-06-02 13:14:12 +01:00
Interrupts.h Kernel: Rename idt_init() to initialize_interrupts() 2022-06-02 13:14:12 +01:00
IRQController.h Kernel: Move IRQController and InterruptManagement to Arch directory 2022-06-02 13:14:12 +01:00
mcontext.h Kernel: Do not include AK/Platform.h in mcontext headers 2022-05-30 21:39:41 +02:00
PageDirectory.h Kernel: Make PageDirectory.cpp compile on aarch64 2022-04-02 19:34:20 -07:00
PageFault.h Kernel: Make PageDirectory.cpp compile on aarch64 2022-04-02 19:34:20 -07:00
Processor.cpp Kernel: Add enum InterruptsState and helper functions 2022-08-26 12:51:57 +02:00
Processor.h Kernel: Add enum InterruptsState and helper functions 2022-08-26 12:51:57 +02:00
ProcessorSpecificDataID.h Kernel: Extract ProcessorSpecificDataID from from Arch/Processor.h 2021-12-11 13:23:27 -08:00
RegisterState.h Kernel: Add cross platform RegisterState header and Aarch64 version 2021-10-15 21:48:45 +01:00
SafeMem.h Everywhere: Fix order of includes and #pragma once 2022-09-18 18:30:05 -07:00
ScopedCritical.h Kernel: Split ScopedCritical so header is platform independent 2021-10-15 21:48:45 +01:00
SmapDisabler.h Kernel: Split SmapDisabler so header is platform independent 2021-10-15 21:48:45 +01:00