VGA text support in qemu-mips
* grub-core/Makefile.core.def (kernel): Add term/i386/pc/vga_text.c, term/i386/vga_common.c and kern/vga_init.c on qemu-mips. * grub-core/kern/mips/qemu_mips/init.c (grub_machine_init): Init vga text. * grub-core/kern/i386/qemu/init.c: Renamed to ... * grub-core/kern/vga_init.c: ... this. * grub-core/kern/vga_init.c (VGA_ADDR) [__mips__]: Adjust. (grub_qemu_init_cirrus) [__mips__]: Skip PCI and adjust the I/O base. * grub-core/term/i386/pc/vga_text.c (VGA_TEXT_SCREEN) [__mips__]: Adjust. * include/grub/vga.h [GRUB_MACHINE_MIPS_QEMU_MIPS]: Declare GRUB_MACHINE_PCI_IO_BASE.
This commit is contained in:
parent
748ccabea1
commit
93c06ff9c6
7 changed files with 56 additions and 6 deletions
17
ChangeLog
17
ChangeLog
|
@ -1,3 +1,20 @@
|
|||
2011-07-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
VGA text support in qemu-mips
|
||||
|
||||
* grub-core/Makefile.core.def (kernel): Add term/i386/pc/vga_text.c,
|
||||
term/i386/vga_common.c and kern/vga_init.c on qemu-mips.
|
||||
* grub-core/kern/mips/qemu_mips/init.c (grub_machine_init): Init vga
|
||||
text.
|
||||
* grub-core/kern/i386/qemu/init.c: Renamed to ...
|
||||
* grub-core/kern/vga_init.c: ... this.
|
||||
* grub-core/kern/vga_init.c (VGA_ADDR) [__mips__]: Adjust.
|
||||
(grub_qemu_init_cirrus) [__mips__]: Skip PCI and adjust the I/O base.
|
||||
* grub-core/term/i386/pc/vga_text.c (VGA_TEXT_SCREEN) [__mips__]:
|
||||
Adjust.
|
||||
* include/grub/vga.h [GRUB_MACHINE_MIPS_QEMU_MIPS]: Declare
|
||||
GRUB_MACHINE_PCI_IO_BASE.
|
||||
|
||||
2011-07-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
MIPS qemu flash support.
|
||||
|
|
|
@ -143,7 +143,7 @@ kernel = {
|
|||
i386_pc = term/i386/pc/console.c;
|
||||
|
||||
i386_qemu = bus/pci.c;
|
||||
i386_qemu = kern/i386/qemu/init.c;
|
||||
i386_qemu = kern/vga_init.c;
|
||||
i386_qemu = kern/i386/qemu/mmap.c;
|
||||
i386_qemu = kern/i386/tsc.c;
|
||||
|
||||
|
@ -164,6 +164,9 @@ kernel = {
|
|||
mips_qemu_mips = term/serial.c;
|
||||
mips_qemu_mips = term/at_keyboard.c;
|
||||
mips_qemu_mips = commands/keylayouts.c;
|
||||
mips_qemu_mips = term/i386/pc/vga_text.c;
|
||||
mips_qemu_mips = term/i386/vga_common.c;
|
||||
mips_qemu_mips = kern/vga_init.c;
|
||||
|
||||
mips_arc = kern/mips/arc/init.c;
|
||||
mips_arc = term/arc/console.c;
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include <grub/mm.h>
|
||||
#include <grub/time.h>
|
||||
#include <grub/machine/memory.h>
|
||||
#include <grub/machine/kernel.h>
|
||||
#include <grub/cpu/memory.h>
|
||||
#include <grub/memory.h>
|
||||
|
||||
|
@ -22,6 +23,7 @@ extern void grub_serial_init (void);
|
|||
extern void grub_terminfo_init (void);
|
||||
extern void grub_keylayouts_init (void);
|
||||
extern void grub_boot_init (void);
|
||||
extern void grub_vga_text_init (void);
|
||||
|
||||
static inline int
|
||||
probe_mem (grub_addr_t addr)
|
||||
|
@ -69,6 +71,9 @@ grub_machine_init (void)
|
|||
grub_keylayouts_init ();
|
||||
grub_at_keyboard_init ();
|
||||
|
||||
grub_qemu_init_cirrus ();
|
||||
grub_vga_text_init ();
|
||||
|
||||
grub_terminfo_init ();
|
||||
grub_serial_init ();
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* GRUB -- GRand Unified Bootloader
|
||||
* Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
* Copyright (C) 2010,2011 Free Software Foundation, Inc.
|
||||
*
|
||||
* GRUB is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -16,7 +16,9 @@
|
|||
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __mips__
|
||||
#include <grub/pci.h>
|
||||
#endif
|
||||
#include <grub/machine/kernel.h>
|
||||
#include <grub/misc.h>
|
||||
#include <grub/vga.h>
|
||||
|
@ -43,7 +45,17 @@ static struct {grub_uint8_t r, g, b, a; } colors[] =
|
|||
{0xFE, 0xFE, 0xFE, 0xFF} // 15 = white
|
||||
};
|
||||
|
||||
#ifdef __mips__
|
||||
extern unsigned char ascii_bitmaps[];
|
||||
#else
|
||||
#include <ascii.h>
|
||||
#endif
|
||||
|
||||
#ifdef __mips__
|
||||
#define VGA_ADDR 0xb00a0000
|
||||
#else
|
||||
#define VGA_ADDR 0xa0000
|
||||
#endif
|
||||
|
||||
static void
|
||||
load_font (void)
|
||||
|
@ -61,7 +73,7 @@ load_font (void)
|
|||
grub_vga_gr_write (0xff, GRUB_VGA_GR_BITMASK);
|
||||
|
||||
for (i = 0; i < 128; i++)
|
||||
grub_memcpy ((void *) (0xa0000 + 32 * i), ascii_bitmaps + 16 * i, 16);
|
||||
grub_memcpy ((void *) (VGA_ADDR + 32 * i), ascii_bitmaps + 16 * i, 16);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -78,6 +90,7 @@ load_palette (void)
|
|||
void
|
||||
grub_qemu_init_cirrus (void)
|
||||
{
|
||||
#ifndef __mips__
|
||||
auto int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid);
|
||||
int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid __attribute__ ((unused)))
|
||||
{
|
||||
|
@ -106,8 +119,10 @@ grub_qemu_init_cirrus (void)
|
|||
}
|
||||
|
||||
grub_pci_iterate (find_card);
|
||||
#endif
|
||||
|
||||
grub_outb (GRUB_VGA_IO_MISC_COLOR, GRUB_VGA_IO_MISC_WRITE);
|
||||
grub_outb (GRUB_VGA_IO_MISC_COLOR,
|
||||
GRUB_MACHINE_PCI_IO_BASE + GRUB_VGA_IO_MISC_WRITE);
|
||||
|
||||
load_font ();
|
||||
|
||||
|
@ -143,5 +158,5 @@ grub_qemu_init_cirrus (void)
|
|||
grub_vga_cr_write (14, GRUB_VGA_CR_CURSOR_START);
|
||||
grub_vga_cr_write (15, GRUB_VGA_CR_CURSOR_END);
|
||||
|
||||
grub_outb (0x20, 0x3c0);
|
||||
grub_outb (0x20, GRUB_MACHINE_PCI_IO_BASE + GRUB_VGA_IO_ARX);
|
||||
}
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
#include <grub/dl.h>
|
||||
#include <grub/i386/vga_common.h>
|
||||
#include <grub/i386/io.h>
|
||||
#include <grub/cpu/io.h>
|
||||
#include <grub/types.h>
|
||||
#include <grub/vga.h>
|
||||
|
||||
|
@ -29,7 +29,11 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
|||
|
||||
static int grub_curr_x, grub_curr_y;
|
||||
|
||||
#ifdef __mips__
|
||||
#define VGA_TEXT_SCREEN ((grub_uint16_t *) 0xb00b8000)
|
||||
#else
|
||||
#define VGA_TEXT_SCREEN ((grub_uint16_t *) 0xb8000)
|
||||
#endif
|
||||
|
||||
static void
|
||||
screen_write_char (int x, int y, short c)
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
void EXPORT_FUNC (grub_reboot) (void);
|
||||
void EXPORT_FUNC (grub_halt) (void);
|
||||
void grub_qemu_init_cirrus (void);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -19,7 +19,12 @@
|
|||
#ifndef GRUB_VGA_HEADER
|
||||
#define GRUB_VGA_HEADER 1
|
||||
|
||||
#ifndef GRUB_MACHINE_MIPS_QEMU_MIPS
|
||||
#include <grub/pci.h>
|
||||
#else
|
||||
#include <grub/cpu/io.h>
|
||||
#define GRUB_MACHINE_PCI_IO_BASE 0xb4000000
|
||||
#endif
|
||||
|
||||
enum
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue