Initialise VGA video on qemu ourselves.

* boot/i386/qemu/boot.S: Don't call 0xc000.
	* conf/i386-qemu.rmk (kern/i386/qemu/init.c_DEPENDENCIES): New variable.
	(kernel_img_SOURCES): Add kern/i386/qemu/init.c and bus/pci.c.
	(kernel_img_HEADERS): Add pci.h.
	* conf/i386.rmk (pkglib_MODULES) [qemu]: Remove pci.mod.
	* configure.ac: Force unifont on qemu and yeeloong.
	* include/grub/i386/qemu/kernel.h (grub_qemu_init_cirrus): New proto.
	(grub_vga_palette_write): Use correct register.
	* kern/i386/coreboot/init.c (grub_machine_init) [GRUB_MACHINE_QEMU]:
	Call grub_qemu_init_cirrus.
	* kern/i386/qemu/init.c: New file.
	* term/i386/pc/vga_text.c (inc_y): Never read outside the screen.

	* commands/videotest.c (grub_cmd_videotest): Handle double buffering.
This commit is contained in:
Vladimir 'phcoder' Serbinenko 2010-06-28 02:33:32 +02:00
commit 53f3ef38c5
11 changed files with 340 additions and 108 deletions

View file

@ -13,10 +13,13 @@ boot_img_ASFLAGS = $(COMMON_ASFLAGS) -DGRUB_BOOT_MACHINE_LINK_ADDR=$(GRUB_BOOT_M
boot_img_LDFLAGS = $(COMMON_LDFLAGS) $(TARGET_IMG_LDFLAGS)$(GRUB_BOOT_MACHINE_LINK_ADDR)
boot_img_FORMAT = binary
kern/i386/qemu/init.c_DEPENDENCIES = ascii.h
pkglib_PROGRAMS += kernel.img
kernel_img_SOURCES = kern/i386/qemu/startup.S \
kern/i386/misc.S \
kern/i386/coreboot/init.c \
kern/i386/qemu/init.c \
kern/i386/qemu/mmap.c \
kern/i386/halt.c \
kern/main.c kern/device.c \
@ -29,8 +32,9 @@ kernel_img_SOURCES = kern/i386/qemu/startup.S \
kern/generic/rtc_get_time_ms.c \
kern/generic/millisleep.c \
kern/env.c \
term/i386/pc/vga_text.c term/i386/vga_common.c \
term/i386/pc/vga_text.c term/i386/vga_common.c bus/pci.c \
symlist.c
kernel_img_HEADERS += pci.h
kernel_img_CFLAGS = $(COMMON_CFLAGS) -DGRUB_BOOT_MACHINE_LINK_ADDR=$(GRUB_BOOT_MACHINE_LINK_ADDR)
kernel_img_ASFLAGS = $(COMMON_ASFLAGS) -DGRUB_KERNEL_MACHINE_LINK_ADDR=$(GRUB_KERNEL_MACHINE_LINK_ADDR)
kernel_img_LDFLAGS += $(COMMON_LDFLAGS) $(TARGET_IMG_LDFLAGS)$(GRUB_KERNEL_MACHINE_LINK_ADDR)

View file

@ -60,11 +60,14 @@ serial_mod_SOURCES = term/serial.c
serial_mod_CFLAGS = $(COMMON_CFLAGS)
serial_mod_LDFLAGS = $(COMMON_LDFLAGS)
# On qemu it's compiled in
ifneq ($(platform), qemu)
# For pci.mod
pkglib_MODULES += pci.mod
pci_mod_SOURCES = bus/pci.c
pci_mod_CFLAGS = $(COMMON_CFLAGS)
pci_mod_LDFLAGS = $(COMMON_LDFLAGS)
endif
# For cs5536.mod
pkglib_MODULES += cs5536.mod