2004-04-04 Yoshinori K. Okuji <okuji@enbug.org>
All symbols prefixed with PUPA_ and pupa_ are renamed to GRUB_ and grub_, respectively. Because the conversion is trivial and mechanical, I omit the details here. Please refer to the CVS if you need more information.
This commit is contained in:
parent
6a1425510d
commit
4b13b216f4
125 changed files with 6198 additions and 6181 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* PUPA -- Preliminary Universal Programming Architecture for GRUB
|
||||
* GRUB -- GRand Unified Bootloader
|
||||
* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -17,24 +17,24 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include <pupa/kernel.h>
|
||||
#include <pupa/mm.h>
|
||||
#include <pupa/machine/init.h>
|
||||
#include <pupa/machine/memory.h>
|
||||
#include <pupa/machine/console.h>
|
||||
#include <pupa/machine/biosdisk.h>
|
||||
#include <pupa/machine/kernel.h>
|
||||
#include <pupa/types.h>
|
||||
#include <pupa/err.h>
|
||||
#include <pupa/dl.h>
|
||||
#include <pupa/misc.h>
|
||||
#include <pupa/loader.h>
|
||||
#include <pupa/env.h>
|
||||
#include <grub/kernel.h>
|
||||
#include <grub/mm.h>
|
||||
#include <grub/machine/init.h>
|
||||
#include <grub/machine/memory.h>
|
||||
#include <grub/machine/console.h>
|
||||
#include <grub/machine/biosdisk.h>
|
||||
#include <grub/machine/kernel.h>
|
||||
#include <grub/types.h>
|
||||
#include <grub/err.h>
|
||||
#include <grub/dl.h>
|
||||
#include <grub/misc.h>
|
||||
#include <grub/loader.h>
|
||||
#include <grub/env.h>
|
||||
|
||||
struct mem_region
|
||||
{
|
||||
pupa_addr_t addr;
|
||||
pupa_size_t size;
|
||||
grub_addr_t addr;
|
||||
grub_size_t size;
|
||||
};
|
||||
|
||||
#define MAX_REGIONS 32
|
||||
|
@ -42,9 +42,9 @@ struct mem_region
|
|||
static struct mem_region mem_regions[MAX_REGIONS];
|
||||
static int num_regions;
|
||||
|
||||
pupa_addr_t pupa_os_area_addr;
|
||||
pupa_size_t pupa_os_area_size;
|
||||
pupa_size_t pupa_lower_mem, pupa_upper_mem;
|
||||
grub_addr_t grub_os_area_addr;
|
||||
grub_size_t grub_os_area_size;
|
||||
grub_size_t grub_lower_mem, grub_upper_mem;
|
||||
|
||||
static char *
|
||||
make_install_device (void)
|
||||
|
@ -52,25 +52,25 @@ make_install_device (void)
|
|||
/* XXX: This should be enough. */
|
||||
char dev[100];
|
||||
|
||||
pupa_sprintf (dev, "(%cd%u",
|
||||
(pupa_boot_drive & 0x80) ? 'h' : 'f',
|
||||
pupa_boot_drive & 0x7f);
|
||||
grub_sprintf (dev, "(%cd%u",
|
||||
(grub_boot_drive & 0x80) ? 'h' : 'f',
|
||||
grub_boot_drive & 0x7f);
|
||||
|
||||
if (pupa_install_dos_part >= 0)
|
||||
pupa_sprintf (dev + pupa_strlen (dev), ",%u", pupa_install_dos_part);
|
||||
if (grub_install_dos_part >= 0)
|
||||
grub_sprintf (dev + grub_strlen (dev), ",%u", grub_install_dos_part);
|
||||
|
||||
if (pupa_install_bsd_part >= 0)
|
||||
pupa_sprintf (dev + pupa_strlen (dev), ",%c", pupa_install_bsd_part + 'a');
|
||||
if (grub_install_bsd_part >= 0)
|
||||
grub_sprintf (dev + grub_strlen (dev), ",%c", grub_install_bsd_part + 'a');
|
||||
|
||||
pupa_sprintf (dev + pupa_strlen (dev), ")%s", pupa_prefix);
|
||||
pupa_strcpy (pupa_prefix, dev);
|
||||
grub_sprintf (dev + grub_strlen (dev), ")%s", grub_prefix);
|
||||
grub_strcpy (grub_prefix, dev);
|
||||
|
||||
return pupa_prefix;
|
||||
return grub_prefix;
|
||||
}
|
||||
|
||||
/* Add a memory region. */
|
||||
static void
|
||||
add_mem_region (pupa_addr_t addr, pupa_size_t size)
|
||||
add_mem_region (grub_addr_t addr, grub_size_t size)
|
||||
{
|
||||
if (num_regions == MAX_REGIONS)
|
||||
/* Ignore. */
|
||||
|
@ -108,44 +108,44 @@ compact_mem_regions (void)
|
|||
mem_regions[i].size = (mem_regions[j].addr + mem_regions[j].size
|
||||
- mem_regions[i].addr);
|
||||
|
||||
pupa_memmove (mem_regions + j, mem_regions + j + 1,
|
||||
grub_memmove (mem_regions + j, mem_regions + j + 1,
|
||||
(num_regions - j - 1) * sizeof (struct mem_region));
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
pupa_machine_init (void)
|
||||
grub_machine_init (void)
|
||||
{
|
||||
pupa_uint32_t cont;
|
||||
struct pupa_machine_mmap_entry *entry
|
||||
= (struct pupa_machine_mmap_entry *) PUPA_MEMORY_MACHINE_SCRATCH_ADDR;
|
||||
pupa_addr_t end_addr = pupa_get_end_addr ();
|
||||
grub_uint32_t cont;
|
||||
struct grub_machine_mmap_entry *entry
|
||||
= (struct grub_machine_mmap_entry *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR;
|
||||
grub_addr_t end_addr = grub_get_end_addr ();
|
||||
int i;
|
||||
|
||||
/* Initialize the console as early as possible. */
|
||||
pupa_console_init ();
|
||||
grub_console_init ();
|
||||
|
||||
pupa_lower_mem = pupa_get_memsize (0) << 10;
|
||||
grub_lower_mem = grub_get_memsize (0) << 10;
|
||||
|
||||
/* Sanity check. */
|
||||
if (pupa_lower_mem < PUPA_MEMORY_MACHINE_RESERVED_END)
|
||||
pupa_fatal ("too small memory");
|
||||
if (grub_lower_mem < GRUB_MEMORY_MACHINE_RESERVED_END)
|
||||
grub_fatal ("too small memory");
|
||||
|
||||
#if 0
|
||||
/* Turn on Gate A20 to access >1MB. */
|
||||
pupa_gate_a20 (1);
|
||||
grub_gate_a20 (1);
|
||||
#endif
|
||||
|
||||
/* Add the lower memory into free memory. */
|
||||
if (pupa_lower_mem >= PUPA_MEMORY_MACHINE_RESERVED_END)
|
||||
add_mem_region (PUPA_MEMORY_MACHINE_RESERVED_END,
|
||||
pupa_lower_mem - PUPA_MEMORY_MACHINE_RESERVED_END);
|
||||
if (grub_lower_mem >= GRUB_MEMORY_MACHINE_RESERVED_END)
|
||||
add_mem_region (GRUB_MEMORY_MACHINE_RESERVED_END,
|
||||
grub_lower_mem - GRUB_MEMORY_MACHINE_RESERVED_END);
|
||||
|
||||
add_mem_region (end_addr, PUPA_MEMORY_MACHINE_RESERVED_START - end_addr);
|
||||
add_mem_region (end_addr, GRUB_MEMORY_MACHINE_RESERVED_START - end_addr);
|
||||
|
||||
/* Check if pupa_get_mmap_entry works. */
|
||||
cont = pupa_get_mmap_entry (entry, 0);
|
||||
/* Check if grub_get_mmap_entry works. */
|
||||
cont = grub_get_mmap_entry (entry, 0);
|
||||
|
||||
if (entry->size)
|
||||
do
|
||||
|
@ -163,13 +163,13 @@ pupa_machine_init (void)
|
|||
/* Ignore >4GB. */
|
||||
if (entry->addr <= 0xFFFFFFFF && entry->type == 1)
|
||||
{
|
||||
pupa_addr_t addr;
|
||||
pupa_size_t len;
|
||||
grub_addr_t addr;
|
||||
grub_size_t len;
|
||||
|
||||
addr = (pupa_addr_t) entry->addr;
|
||||
addr = (grub_addr_t) entry->addr;
|
||||
len = ((addr + entry->len > 0xFFFFFFFF)
|
||||
? 0xFFFFFFFF - addr
|
||||
: (pupa_size_t) entry->len);
|
||||
: (grub_size_t) entry->len);
|
||||
add_mem_region (addr, len);
|
||||
}
|
||||
|
||||
|
@ -177,12 +177,12 @@ pupa_machine_init (void)
|
|||
if (! cont)
|
||||
break;
|
||||
|
||||
cont = pupa_get_mmap_entry (entry, cont);
|
||||
cont = grub_get_mmap_entry (entry, cont);
|
||||
}
|
||||
while (entry->size);
|
||||
else
|
||||
{
|
||||
pupa_uint32_t eisa_mmap = pupa_get_eisa_mmap ();
|
||||
grub_uint32_t eisa_mmap = grub_get_eisa_mmap ();
|
||||
|
||||
if (eisa_mmap)
|
||||
{
|
||||
|
@ -195,7 +195,7 @@ pupa_machine_init (void)
|
|||
}
|
||||
}
|
||||
else
|
||||
add_mem_region (0x100000, pupa_get_memsize (1) << 10);
|
||||
add_mem_region (0x100000, grub_get_memsize (1) << 10);
|
||||
}
|
||||
|
||||
compact_mem_regions ();
|
||||
|
@ -206,24 +206,24 @@ pupa_machine_init (void)
|
|||
for (i = 0; i < num_regions; i++)
|
||||
if (mem_regions[i].addr == 0x100000)
|
||||
{
|
||||
pupa_size_t quarter = mem_regions[i].size >> 2;
|
||||
grub_size_t quarter = mem_regions[i].size >> 2;
|
||||
|
||||
pupa_upper_mem = mem_regions[i].size;
|
||||
pupa_os_area_addr = mem_regions[i].addr;
|
||||
pupa_os_area_size = mem_regions[i].size - quarter;
|
||||
pupa_mm_init_region ((void *) (pupa_os_area_addr + pupa_os_area_size),
|
||||
grub_upper_mem = mem_regions[i].size;
|
||||
grub_os_area_addr = mem_regions[i].addr;
|
||||
grub_os_area_size = mem_regions[i].size - quarter;
|
||||
grub_mm_init_region ((void *) (grub_os_area_addr + grub_os_area_size),
|
||||
quarter);
|
||||
}
|
||||
else
|
||||
pupa_mm_init_region ((void *) mem_regions[i].addr, mem_regions[i].size);
|
||||
grub_mm_init_region ((void *) mem_regions[i].addr, mem_regions[i].size);
|
||||
|
||||
if (! pupa_os_area_addr)
|
||||
pupa_fatal ("no upper memory");
|
||||
if (! grub_os_area_addr)
|
||||
grub_fatal ("no upper memory");
|
||||
|
||||
/* The memory system was initialized, thus register built-in devices. */
|
||||
pupa_biosdisk_init ();
|
||||
grub_biosdisk_init ();
|
||||
|
||||
|
||||
/* Initialize the prefix. */
|
||||
pupa_env_set ("prefix", make_install_device ());
|
||||
grub_env_set ("prefix", make_install_device ());
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* PUPA -- Preliminary Universal Programming Architecture for GRUB
|
||||
* GRUB -- GRand Unified Bootloader
|
||||
* Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
|
||||
* Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
*
|
||||
|
@ -21,7 +21,7 @@
|
|||
/*
|
||||
* This code was stolen from the files enter.sh, leave.sh, lzo1x_d.sh,
|
||||
* lzo1x_f.s and lzo_asm.h in LZO version 1.08, and was heavily modified
|
||||
* to adapt it to PUPA's requirement.
|
||||
* to adapt it to GRUB's requirement.
|
||||
*
|
||||
* See <http://www.oberhumer.com/opensource/lzo/>, for more information
|
||||
* about LZO.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* PUPA -- Preliminary Universal Programming Architecture for GRUB
|
||||
* GRUB -- GRand Unified Bootloader
|
||||
* Copyright (C) 1999,2000,2001,2002,2003 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -35,7 +35,7 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
* Note: PUPA is compiled with the options -mrtd and -mregparm=3.
|
||||
* Note: GRUB is compiled with the options -mrtd and -mregparm=3.
|
||||
* So the first three arguments are passed in %eax, %edx, and %ecx,
|
||||
* respectively, and if a function has a fixed number of arguments
|
||||
* and the number if greater than three, the function must return
|
||||
|
@ -43,16 +43,16 @@
|
|||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <pupa/symbol.h>
|
||||
#include <pupa/boot.h>
|
||||
#include <pupa/machine/boot.h>
|
||||
#include <pupa/machine/memory.h>
|
||||
#include <pupa/machine/console.h>
|
||||
#include <pupa/machine/linux.h>
|
||||
#include <pupa/machine/kernel.h>
|
||||
#include <pupa/machine/multiboot.h>
|
||||
#include <grub/symbol.h>
|
||||
#include <grub/boot.h>
|
||||
#include <grub/machine/boot.h>
|
||||
#include <grub/machine/memory.h>
|
||||
#include <grub/machine/console.h>
|
||||
#include <grub/machine/linux.h>
|
||||
#include <grub/machine/kernel.h>
|
||||
#include <grub/machine/multiboot.h>
|
||||
|
||||
#define ABS(x) ((x) - EXT_C(start) + PUPA_BOOT_MACHINE_KERNEL_ADDR + 0x200)
|
||||
#define ABS(x) ((x) - EXT_C(start) + GRUB_BOOT_MACHINE_KERNEL_ADDR + 0x200)
|
||||
|
||||
.file "startup.S"
|
||||
|
||||
|
@ -77,7 +77,7 @@ _start:
|
|||
* DO NOT MOVE !!!
|
||||
*/
|
||||
. = EXT_C(start) + 0x6
|
||||
.byte PUPA_BOOT_VERSION_MAJOR, PUPA_BOOT_VERSION_MINOR
|
||||
.byte GRUB_BOOT_VERSION_MAJOR, GRUB_BOOT_VERSION_MINOR
|
||||
|
||||
/*
|
||||
* This is a special data area 8 bytes from the beginning.
|
||||
|
@ -85,18 +85,18 @@ _start:
|
|||
|
||||
. = EXT_C(start) + 0x8
|
||||
|
||||
VARIABLE(pupa_total_module_size)
|
||||
VARIABLE(grub_total_module_size)
|
||||
.long 0
|
||||
VARIABLE(pupa_kernel_image_size)
|
||||
VARIABLE(grub_kernel_image_size)
|
||||
.long 0
|
||||
VARIABLE(pupa_compressed_size)
|
||||
VARIABLE(grub_compressed_size)
|
||||
.long 0
|
||||
VARIABLE(pupa_install_dos_part)
|
||||
VARIABLE(grub_install_dos_part)
|
||||
.long 0xFFFFFFFF
|
||||
VARIABLE(pupa_install_bsd_part)
|
||||
VARIABLE(grub_install_bsd_part)
|
||||
.long 0xFFFFFFFF
|
||||
VARIABLE(pupa_prefix)
|
||||
.string "/boot/pupa"
|
||||
VARIABLE(grub_prefix)
|
||||
.string "/boot/grub"
|
||||
|
||||
/*
|
||||
* Leave some breathing room for the prefix.
|
||||
|
@ -115,13 +115,13 @@ codestart:
|
|||
movw %ax, %es
|
||||
|
||||
/* set up the real mode/BIOS stack */
|
||||
movl $PUPA_MEMORY_MACHINE_REAL_STACK, %ebp
|
||||
movl $GRUB_MEMORY_MACHINE_REAL_STACK, %ebp
|
||||
movl %ebp, %esp
|
||||
|
||||
sti /* we're safe again */
|
||||
|
||||
/* save boot drive reference */
|
||||
ADDR32 movb %dl, EXT_C(pupa_boot_drive)
|
||||
ADDR32 movb %dl, EXT_C(grub_boot_drive)
|
||||
|
||||
/* reset disk system (%ah = 0) */
|
||||
int $0x13
|
||||
|
@ -133,14 +133,14 @@ codestart:
|
|||
.code32
|
||||
|
||||
incl %eax
|
||||
call EXT_C(pupa_gate_a20)
|
||||
call EXT_C(grub_gate_a20)
|
||||
|
||||
/* decompress the compressed part and put the result at 1MB */
|
||||
movl $0x100000, %esi
|
||||
movl $(START_SYMBOL + PUPA_KERNEL_MACHINE_RAW_SIZE), %edi
|
||||
movl $(START_SYMBOL + GRUB_KERNEL_MACHINE_RAW_SIZE), %edi
|
||||
|
||||
pushl %esi
|
||||
pushl EXT_C(pupa_compressed_size)
|
||||
pushl EXT_C(grub_compressed_size)
|
||||
pushl %edi
|
||||
call lzo1x_decompress
|
||||
addl $12, %esp
|
||||
|
@ -152,8 +152,8 @@ codestart:
|
|||
movsb
|
||||
|
||||
/* copy modules before cleaning out the bss */
|
||||
movl EXT_C(pupa_total_module_size), %ecx
|
||||
movl EXT_C(pupa_kernel_image_size), %esi
|
||||
movl EXT_C(grub_total_module_size), %ecx
|
||||
movl EXT_C(grub_kernel_image_size), %esi
|
||||
addl %ecx, %esi
|
||||
addl $START_SYMBOL, %esi
|
||||
decl %esi
|
||||
|
@ -180,7 +180,7 @@ codestart:
|
|||
/*
|
||||
* Call the start of main body of C code.
|
||||
*/
|
||||
call EXT_C(pupa_main)
|
||||
call EXT_C(grub_main)
|
||||
|
||||
|
||||
/*
|
||||
|
@ -190,18 +190,18 @@ codestart:
|
|||
.p2align 2 /* force 4-byte alignment */
|
||||
|
||||
protstack:
|
||||
.long PUPA_MEMORY_MACHINE_PROT_STACK
|
||||
.long GRUB_MEMORY_MACHINE_PROT_STACK
|
||||
|
||||
VARIABLE(pupa_boot_drive)
|
||||
VARIABLE(grub_boot_drive)
|
||||
.long 0
|
||||
|
||||
VARIABLE(pupa_start_addr)
|
||||
VARIABLE(grub_start_addr)
|
||||
.long START_SYMBOL
|
||||
|
||||
VARIABLE(pupa_end_addr)
|
||||
VARIABLE(grub_end_addr)
|
||||
.long END_SYMBOL
|
||||
|
||||
VARIABLE(pupa_apm_bios_info)
|
||||
VARIABLE(grub_apm_bios_info)
|
||||
.word 0 /* version */
|
||||
.word 0 /* cseg */
|
||||
.long 0 /* offset */
|
||||
|
@ -275,16 +275,16 @@ real_to_prot:
|
|||
|
||||
/* turn on protected mode */
|
||||
movl %cr0, %eax
|
||||
orl $PUPA_MEMORY_MACHINE_CR0_PE_ON, %eax
|
||||
orl $GRUB_MEMORY_MACHINE_CR0_PE_ON, %eax
|
||||
movl %eax, %cr0
|
||||
|
||||
/* jump to relocation, flush prefetch queue, and reload %cs */
|
||||
DATA32 ljmp $PUPA_MEMORY_MACHINE_PROT_MODE_CSEG, $protcseg
|
||||
DATA32 ljmp $GRUB_MEMORY_MACHINE_PROT_MODE_CSEG, $protcseg
|
||||
|
||||
.code32
|
||||
protcseg:
|
||||
/* reload other segment registers */
|
||||
movw $PUPA_MEMORY_MACHINE_PROT_MODE_DSEG, %ax
|
||||
movw $GRUB_MEMORY_MACHINE_PROT_MODE_DSEG, %ax
|
||||
movw %ax, %ds
|
||||
movw %ax, %es
|
||||
movw %ax, %fs
|
||||
|
@ -293,7 +293,7 @@ protcseg:
|
|||
|
||||
/* put the return address in a known safe location */
|
||||
movl (%esp), %eax
|
||||
movl %eax, PUPA_MEMORY_MACHINE_REAL_STACK
|
||||
movl %eax, GRUB_MEMORY_MACHINE_REAL_STACK
|
||||
|
||||
/* get protected mode stack */
|
||||
movl protstack, %eax
|
||||
|
@ -301,7 +301,7 @@ protcseg:
|
|||
movl %eax, %ebp
|
||||
|
||||
/* get return address onto the right stack */
|
||||
movl PUPA_MEMORY_MACHINE_REAL_STACK, %eax
|
||||
movl GRUB_MEMORY_MACHINE_REAL_STACK, %eax
|
||||
movl %eax, (%esp)
|
||||
|
||||
/* zero %eax */
|
||||
|
@ -321,15 +321,15 @@ prot_to_real:
|
|||
|
||||
/* get the return address */
|
||||
movl (%esp), %eax
|
||||
movl %eax, PUPA_MEMORY_MACHINE_REAL_STACK
|
||||
movl %eax, GRUB_MEMORY_MACHINE_REAL_STACK
|
||||
|
||||
/* set up new stack */
|
||||
movl $PUPA_MEMORY_MACHINE_REAL_STACK, %eax
|
||||
movl $GRUB_MEMORY_MACHINE_REAL_STACK, %eax
|
||||
movl %eax, %esp
|
||||
movl %eax, %ebp
|
||||
|
||||
/* set up segment limits */
|
||||
movw $PUPA_MEMORY_MACHINE_PSEUDO_REAL_DSEG, %ax
|
||||
movw $GRUB_MEMORY_MACHINE_PSEUDO_REAL_DSEG, %ax
|
||||
movw %ax, %ds
|
||||
movw %ax, %es
|
||||
movw %ax, %fs
|
||||
|
@ -338,14 +338,14 @@ prot_to_real:
|
|||
|
||||
/* this might be an extra step */
|
||||
/* jump to a 16 bit segment */
|
||||
ljmp $PUPA_MEMORY_MACHINE_PSEUDO_REAL_CSEG, $tmpcseg
|
||||
ljmp $GRUB_MEMORY_MACHINE_PSEUDO_REAL_CSEG, $tmpcseg
|
||||
|
||||
tmpcseg:
|
||||
.code16
|
||||
|
||||
/* clear the PE bit of CR0 */
|
||||
movl %cr0, %eax
|
||||
andl $(~PUPA_MEMORY_MACHINE_CR0_PE_ON), %eax
|
||||
andl $(~GRUB_MEMORY_MACHINE_CR0_PE_ON), %eax
|
||||
movl %eax, %cr0
|
||||
|
||||
/* flush prefetch queue, reload %cs */
|
||||
|
@ -374,7 +374,7 @@ realcseg:
|
|||
|
||||
|
||||
/*
|
||||
* pupa_gate_a20(int on)
|
||||
* grub_gate_a20(int on)
|
||||
*
|
||||
* Gate address-line 20 for high memory.
|
||||
*
|
||||
|
@ -383,7 +383,7 @@ realcseg:
|
|||
* It also eats any keystrokes in the keyboard buffer. :-(
|
||||
*/
|
||||
|
||||
FUNCTION(pupa_gate_a20)
|
||||
FUNCTION(grub_gate_a20)
|
||||
movl %eax, %ecx
|
||||
|
||||
call gloop1
|
||||
|
@ -437,7 +437,7 @@ gloop2ret:
|
|||
* hang at this point!
|
||||
*/
|
||||
|
||||
FUNCTION(pupa_stop)
|
||||
FUNCTION(grub_stop)
|
||||
call prot_to_real
|
||||
|
||||
/*
|
||||
|
@ -446,29 +446,29 @@ FUNCTION(pupa_stop)
|
|||
* mode, so think about it before changing it.
|
||||
*/
|
||||
|
||||
FUNCTION(pupa_hard_stop)
|
||||
FUNCTION(grub_hard_stop)
|
||||
hlt
|
||||
jmp EXT_C(pupa_hard_stop)
|
||||
jmp EXT_C(grub_hard_stop)
|
||||
|
||||
|
||||
/*
|
||||
* pupa_stop_floppy()
|
||||
* grub_stop_floppy()
|
||||
*
|
||||
* Stop the floppy drive from spinning, so that other software is
|
||||
* jumped to with a known state.
|
||||
*/
|
||||
FUNCTION(pupa_stop_floppy)
|
||||
FUNCTION(grub_stop_floppy)
|
||||
movw $0x3F2, %dx
|
||||
xorb %al, %al
|
||||
outb %al, %dx
|
||||
ret
|
||||
|
||||
/*
|
||||
* pupa_reboot()
|
||||
* grub_reboot()
|
||||
*
|
||||
* Reboot the system. At the moment, rely on BIOS.
|
||||
*/
|
||||
FUNCTION(pupa_reboot)
|
||||
FUNCTION(grub_reboot)
|
||||
call prot_to_real
|
||||
.code16
|
||||
/* cold boot */
|
||||
|
@ -478,15 +478,15 @@ FUNCTION(pupa_reboot)
|
|||
.code32
|
||||
|
||||
/*
|
||||
* pupa_halt(int no_apm)
|
||||
* grub_halt(int no_apm)
|
||||
*
|
||||
* Halt the system, using APM if possible. If NO_APM is true, don't use
|
||||
* APM even if it is available.
|
||||
*/
|
||||
FUNCTION(pupa_halt)
|
||||
FUNCTION(grub_halt)
|
||||
/* see if zero */
|
||||
testl %eax, %eax
|
||||
jnz EXT_C(pupa_stop)
|
||||
jnz EXT_C(grub_stop)
|
||||
|
||||
call prot_to_real
|
||||
.code16
|
||||
|
@ -495,7 +495,7 @@ FUNCTION(pupa_halt)
|
|||
movw $0x5300, %ax
|
||||
xorw %bx, %bx
|
||||
int $0x15
|
||||
jc EXT_C(pupa_hard_stop)
|
||||
jc EXT_C(grub_hard_stop)
|
||||
/* don't check %bx for buggy BIOSes... */
|
||||
|
||||
/* disconnect APM first */
|
||||
|
@ -507,14 +507,14 @@ FUNCTION(pupa_halt)
|
|||
movw $0x5301, %ax
|
||||
xorw %bx, %bx
|
||||
int $0x15
|
||||
jc EXT_C(pupa_hard_stop)
|
||||
jc EXT_C(grub_hard_stop)
|
||||
|
||||
/* set APM protocol level - 1.1 or bust. (this covers APM 1.2 also) */
|
||||
movw $0x530E, %ax
|
||||
xorw %bx, %bx
|
||||
movw $0x0101, %cx
|
||||
int $0x15
|
||||
jc EXT_C(pupa_hard_stop)
|
||||
jc EXT_C(grub_hard_stop)
|
||||
|
||||
/* set the power state to off */
|
||||
movw $0x5307, %ax
|
||||
|
@ -523,21 +523,21 @@ FUNCTION(pupa_halt)
|
|||
int $0x15
|
||||
|
||||
/* shouldn't reach here */
|
||||
jmp EXT_C(pupa_hard_stop)
|
||||
jmp EXT_C(grub_hard_stop)
|
||||
.code32
|
||||
|
||||
|
||||
/*
|
||||
* void pupa_chainloader_real_boot (int drive, void *part_addr)
|
||||
* void grub_chainloader_real_boot (int drive, void *part_addr)
|
||||
*
|
||||
* This starts another boot loader.
|
||||
*/
|
||||
|
||||
FUNCTION(pupa_chainloader_real_boot)
|
||||
FUNCTION(grub_chainloader_real_boot)
|
||||
pushl %edx
|
||||
pushl %eax
|
||||
|
||||
call EXT_C(pupa_dl_unload_all)
|
||||
call EXT_C(grub_dl_unload_all)
|
||||
|
||||
/* set up to pass boot drive */
|
||||
popl %edx
|
||||
|
@ -547,44 +547,44 @@ FUNCTION(pupa_chainloader_real_boot)
|
|||
|
||||
/* Turn off Gate A20 */
|
||||
xorl %eax, %eax
|
||||
call EXT_C(pupa_gate_a20)
|
||||
call EXT_C(grub_gate_a20)
|
||||
|
||||
call prot_to_real
|
||||
.code16
|
||||
ljmp $0, $PUPA_MEMORY_MACHINE_BOOT_LOADER_ADDR
|
||||
ljmp $0, $GRUB_MEMORY_MACHINE_BOOT_LOADER_ADDR
|
||||
.code32
|
||||
|
||||
|
||||
/*
|
||||
* void pupa_linux_boot_zimage (void)
|
||||
* void grub_linux_boot_zimage (void)
|
||||
*/
|
||||
VARIABLE(pupa_linux_prot_size)
|
||||
VARIABLE(grub_linux_prot_size)
|
||||
.long 0
|
||||
VARIABLE(pupa_linux_tmp_addr)
|
||||
VARIABLE(grub_linux_tmp_addr)
|
||||
.long 0
|
||||
VARIABLE(pupa_linux_real_addr)
|
||||
VARIABLE(grub_linux_real_addr)
|
||||
.long 0
|
||||
|
||||
FUNCTION(pupa_linux_boot_zimage)
|
||||
FUNCTION(grub_linux_boot_zimage)
|
||||
/* copy the kernel */
|
||||
movl EXT_C(pupa_linux_prot_size), %ecx
|
||||
movl EXT_C(grub_linux_prot_size), %ecx
|
||||
addl $3, %ecx
|
||||
shrl $2, %ecx
|
||||
movl $PUPA_LINUX_BZIMAGE_ADDR, %esi
|
||||
movl $PUPA_LINUX_ZIMAGE_ADDR, %edi
|
||||
movl $GRUB_LINUX_BZIMAGE_ADDR, %esi
|
||||
movl $GRUB_LINUX_ZIMAGE_ADDR, %edi
|
||||
cld
|
||||
rep
|
||||
movsl
|
||||
|
||||
FUNCTION(pupa_linux_boot_bzimage)
|
||||
call EXT_C(pupa_dl_unload_all)
|
||||
FUNCTION(grub_linux_boot_bzimage)
|
||||
call EXT_C(grub_dl_unload_all)
|
||||
|
||||
movl EXT_C(pupa_linux_real_addr), %ebx
|
||||
movl EXT_C(grub_linux_real_addr), %ebx
|
||||
|
||||
/* copy the real mode code */
|
||||
movl EXT_C(pupa_linux_tmp_addr), %esi
|
||||
movl EXT_C(grub_linux_tmp_addr), %esi
|
||||
movl %ebx, %edi
|
||||
movl $PUPA_LINUX_SETUP_MOVE_SIZE, %ecx
|
||||
movl $GRUB_LINUX_SETUP_MOVE_SIZE, %ecx
|
||||
cld
|
||||
rep
|
||||
movsb
|
||||
|
@ -597,7 +597,7 @@ FUNCTION(pupa_linux_boot_bzimage)
|
|||
|
||||
/* XXX new stack pointer in safe area for calling functions */
|
||||
movl $0x4000, %esp
|
||||
call EXT_C(pupa_stop_floppy)
|
||||
call EXT_C(grub_stop_floppy)
|
||||
|
||||
/* final setup for linux boot */
|
||||
call prot_to_real
|
||||
|
@ -605,7 +605,7 @@ FUNCTION(pupa_linux_boot_bzimage)
|
|||
|
||||
cli
|
||||
movw %bx, %ss
|
||||
movw $PUPA_LINUX_SETUP_STACK, %sp
|
||||
movw $GRUB_LINUX_SETUP_STACK, %sp
|
||||
|
||||
movw %bx, %ds
|
||||
movw %bx, %es
|
||||
|
@ -624,34 +624,34 @@ linux_setup_seg:
|
|||
* This starts the multiboot kernel.
|
||||
*/
|
||||
|
||||
FUNCTION(pupa_multiboot_real_boot)
|
||||
FUNCTION(grub_multiboot_real_boot)
|
||||
/* Push the entry address on the stack. */
|
||||
pushl %eax
|
||||
/* Move the address of the multiboot information structure to ebx. */
|
||||
movl %edx,%ebx
|
||||
|
||||
/* Unload all modules and stop the floppy driver. */
|
||||
call EXT_C(pupa_dl_unload_all)
|
||||
call EXT_C(pupa_stop_floppy)
|
||||
call EXT_C(grub_dl_unload_all)
|
||||
call EXT_C(grub_stop_floppy)
|
||||
|
||||
/* Interrupts should be disabled. */
|
||||
cli
|
||||
|
||||
/* Move the magic value into eax and jump to the kernel. */
|
||||
movl $PUPA_MB_MAGIC2,%eax
|
||||
movl $GRUB_MB_MAGIC2,%eax
|
||||
popl %ecx
|
||||
jmp *%ecx
|
||||
|
||||
|
||||
/*
|
||||
* int pupa_biosdisk_rw_int13_extensions (int ah, int drive, void *dap)
|
||||
* int grub_biosdisk_rw_int13_extensions (int ah, int drive, void *dap)
|
||||
*
|
||||
* Call IBM/MS INT13 Extensions (int 13 %ah=AH) for DRIVE. DAP
|
||||
* is passed for disk address packet. If an error occurs, return
|
||||
* non-zero, otherwise zero.
|
||||
*/
|
||||
|
||||
FUNCTION(pupa_biosdisk_rw_int13_extensions)
|
||||
FUNCTION(grub_biosdisk_rw_int13_extensions)
|
||||
pushl %ebp
|
||||
pushl %esi
|
||||
|
||||
|
@ -685,7 +685,7 @@ FUNCTION(pupa_biosdisk_rw_int13_extensions)
|
|||
ret
|
||||
|
||||
/*
|
||||
* int pupa_biosdisk_rw_standard (int ah, int drive, int coff, int hoff,
|
||||
* int grub_biosdisk_rw_standard (int ah, int drive, int coff, int hoff,
|
||||
* int soff, int nsec, int segment)
|
||||
*
|
||||
* Call standard and old INT13 (int 13 %ah=AH) for DRIVE. Read/write
|
||||
|
@ -693,7 +693,7 @@ FUNCTION(pupa_biosdisk_rw_int13_extensions)
|
|||
* return non-zero, otherwise zero.
|
||||
*/
|
||||
|
||||
FUNCTION(pupa_biosdisk_rw_standard)
|
||||
FUNCTION(grub_biosdisk_rw_standard)
|
||||
pushl %ebp
|
||||
movl %esp, %ebp
|
||||
|
||||
|
@ -759,13 +759,13 @@ FUNCTION(pupa_biosdisk_rw_standard)
|
|||
|
||||
|
||||
/*
|
||||
* int pupa_biosdisk_check_int13_extensions (int drive)
|
||||
* int grub_biosdisk_check_int13_extensions (int drive)
|
||||
*
|
||||
* Check if LBA is supported for DRIVE. If it is supported, then return
|
||||
* the major version of extensions, otherwise zero.
|
||||
*/
|
||||
|
||||
FUNCTION(pupa_biosdisk_check_int13_extensions)
|
||||
FUNCTION(grub_biosdisk_check_int13_extensions)
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
|
||||
|
@ -806,13 +806,13 @@ FUNCTION(pupa_biosdisk_check_int13_extensions)
|
|||
|
||||
|
||||
/*
|
||||
* int pupa_biosdisk_get_diskinfo_int13_extensions (int drive, void *drp)
|
||||
* int grub_biosdisk_get_diskinfo_int13_extensions (int drive, void *drp)
|
||||
*
|
||||
* Return the geometry of DRIVE in a drive parameters, DRP. If an error
|
||||
* occurs, then return non-zero, otherwise zero.
|
||||
*/
|
||||
|
||||
FUNCTION(pupa_biosdisk_get_diskinfo_int13_extensions)
|
||||
FUNCTION(grub_biosdisk_get_diskinfo_int13_extensions)
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %esi
|
||||
|
@ -849,7 +849,7 @@ FUNCTION(pupa_biosdisk_get_diskinfo_int13_extensions)
|
|||
|
||||
|
||||
/*
|
||||
* int pupa_biosdisk_get_diskinfo_standard (int drive,
|
||||
* int grub_biosdisk_get_diskinfo_standard (int drive,
|
||||
* unsigned long *cylinders,
|
||||
* unsigned long *heads,
|
||||
* unsigned long *sectors)
|
||||
|
@ -858,7 +858,7 @@ FUNCTION(pupa_biosdisk_get_diskinfo_int13_extensions)
|
|||
* error occurs, then return non-zero, otherwise zero.
|
||||
*/
|
||||
|
||||
FUNCTION(pupa_biosdisk_get_diskinfo_standard)
|
||||
FUNCTION(grub_biosdisk_get_diskinfo_standard)
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %edi
|
||||
|
@ -922,9 +922,9 @@ FUNCTION(pupa_biosdisk_get_diskinfo_standard)
|
|||
|
||||
|
||||
/*
|
||||
* int pupa_biosdisk_get_num_floppies (void)
|
||||
* int grub_biosdisk_get_num_floppies (void)
|
||||
*/
|
||||
FUNCTION(pupa_biosdisk_get_num_floppies)
|
||||
FUNCTION(grub_biosdisk_get_num_floppies)
|
||||
pushl %ebp
|
||||
|
||||
xorl %edx, %edx
|
||||
|
@ -960,7 +960,7 @@ FUNCTION(pupa_biosdisk_get_num_floppies)
|
|||
|
||||
/*
|
||||
*
|
||||
* pupa_get_memsize(i) : return the memory size in KB. i == 0 for conventional
|
||||
* grub_get_memsize(i) : return the memory size in KB. i == 0 for conventional
|
||||
* memory, i == 1 for extended memory
|
||||
* BIOS call "INT 12H" to get conventional memory size
|
||||
* BIOS call "INT 15H, AH=88H" to get extended memory size
|
||||
|
@ -968,7 +968,7 @@ FUNCTION(pupa_biosdisk_get_num_floppies)
|
|||
*
|
||||
*/
|
||||
|
||||
FUNCTION(pupa_get_memsize)
|
||||
FUNCTION(grub_get_memsize)
|
||||
pushl %ebp
|
||||
|
||||
movl %eax, %edx
|
||||
|
@ -1000,7 +1000,7 @@ xdone:
|
|||
|
||||
/*
|
||||
*
|
||||
* pupa_get_eisa_mmap() : return packed EISA memory map, lower 16 bits is
|
||||
* grub_get_eisa_mmap() : return packed EISA memory map, lower 16 bits is
|
||||
* memory between 1M and 16M in 1K parts, upper 16 bits is
|
||||
* memory above 16M in 64K parts. If error, return zero.
|
||||
* BIOS call "INT 15H, AH=E801H" to get EISA memory map,
|
||||
|
@ -1009,7 +1009,7 @@ xdone:
|
|||
*
|
||||
*/
|
||||
|
||||
FUNCTION(pupa_get_eisa_mmap)
|
||||
FUNCTION(grub_get_eisa_mmap)
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
|
||||
|
@ -1037,7 +1037,7 @@ xnoteisa:
|
|||
|
||||
/*
|
||||
*
|
||||
* pupa_get_mmap_entry(addr, cont) : address and old continuation value (zero to
|
||||
* grub_get_mmap_entry(addr, cont) : address and old continuation value (zero to
|
||||
* start), for the Query System Address Map BIOS call.
|
||||
*
|
||||
* Sets the first 4-byte int value of "addr" to the size returned by
|
||||
|
@ -1046,7 +1046,7 @@ xnoteisa:
|
|||
* Returns: new (non-zero) continuation value, 0 if done.
|
||||
*/
|
||||
|
||||
FUNCTION(pupa_get_mmap_entry)
|
||||
FUNCTION(grub_get_mmap_entry)
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %edi
|
||||
|
@ -1113,7 +1113,7 @@ xsmap:
|
|||
|
||||
|
||||
/*
|
||||
* void pupa_console_real_putchar (int c)
|
||||
* void grub_console_real_putchar (int c)
|
||||
*
|
||||
* Put the character C on the console. Because GRUB wants to write a
|
||||
* character with an attribute, this implementation is a bit tricky.
|
||||
|
@ -1126,10 +1126,10 @@ xsmap:
|
|||
* get the height of the screen, and the TELETYPE OUPUT BIOS call doesn't
|
||||
* support setting a background attribute.
|
||||
*/
|
||||
FUNCTION(pupa_console_real_putchar)
|
||||
FUNCTION(grub_console_real_putchar)
|
||||
movl %eax, %edx
|
||||
pusha
|
||||
movb EXT_C(pupa_console_cur_color), %bl
|
||||
movb EXT_C(grub_console_cur_color), %bl
|
||||
|
||||
call prot_to_real
|
||||
.code16
|
||||
|
@ -1197,7 +1197,7 @@ FUNCTION(pupa_console_real_putchar)
|
|||
|
||||
|
||||
/*
|
||||
* int pupa_console_getkey (void)
|
||||
* int grub_console_getkey (void)
|
||||
* BIOS call "INT 16H Function 00H" to read character from keyboard
|
||||
* Call with %ah = 0x0
|
||||
* Return: %ah = keyboard scan code
|
||||
|
@ -1206,16 +1206,16 @@ FUNCTION(pupa_console_real_putchar)
|
|||
|
||||
/* this table is used in translate_keycode below */
|
||||
translation_table:
|
||||
.word PUPA_CONSOLE_KEY_LEFT, 2
|
||||
.word PUPA_CONSOLE_KEY_RIGHT, 6
|
||||
.word PUPA_CONSOLE_KEY_UP, 16
|
||||
.word PUPA_CONSOLE_KEY_DOWN, 14
|
||||
.word PUPA_CONSOLE_KEY_HOME, 1
|
||||
.word PUPA_CONSOLE_KEY_END, 5
|
||||
.word PUPA_CONSOLE_KEY_DC, 4
|
||||
.word PUPA_CONSOLE_KEY_BACKSPACE, 8
|
||||
.word PUPA_CONSOLE_KEY_PPAGE, 7
|
||||
.word PUPA_CONSOLE_KEY_NPAGE, 3
|
||||
.word GRUB_CONSOLE_KEY_LEFT, 2
|
||||
.word GRUB_CONSOLE_KEY_RIGHT, 6
|
||||
.word GRUB_CONSOLE_KEY_UP, 16
|
||||
.word GRUB_CONSOLE_KEY_DOWN, 14
|
||||
.word GRUB_CONSOLE_KEY_HOME, 1
|
||||
.word GRUB_CONSOLE_KEY_END, 5
|
||||
.word GRUB_CONSOLE_KEY_DC, 4
|
||||
.word GRUB_CONSOLE_KEY_BACKSPACE, 8
|
||||
.word GRUB_CONSOLE_KEY_PPAGE, 7
|
||||
.word GRUB_CONSOLE_KEY_NPAGE, 3
|
||||
.word 0
|
||||
|
||||
/*
|
||||
|
@ -1248,7 +1248,7 @@ translate_keycode:
|
|||
|
||||
.code32
|
||||
|
||||
FUNCTION(pupa_console_getkey)
|
||||
FUNCTION(grub_console_getkey)
|
||||
pushl %ebp
|
||||
|
||||
call prot_to_real
|
||||
|
@ -1269,7 +1269,7 @@ FUNCTION(pupa_console_getkey)
|
|||
|
||||
|
||||
/*
|
||||
* int pupa_console_checkkey (void)
|
||||
* int grub_console_checkkey (void)
|
||||
* if there is a character pending, return it; otherwise return -1
|
||||
* BIOS call "INT 16H Function 01H" to check whether a character is pending
|
||||
* Call with %ah = 0x1
|
||||
|
@ -1281,7 +1281,7 @@ FUNCTION(pupa_console_getkey)
|
|||
* else
|
||||
* Zero flag = set
|
||||
*/
|
||||
FUNCTION(pupa_console_checkkey)
|
||||
FUNCTION(grub_console_checkkey)
|
||||
pushl %ebp
|
||||
xorl %edx, %edx
|
||||
|
||||
|
@ -1310,7 +1310,7 @@ pending:
|
|||
|
||||
|
||||
/*
|
||||
* pupa_uint16_t pupa_console_getxy (void)
|
||||
* grub_uint16_t grub_console_getxy (void)
|
||||
* BIOS call "INT 10H Function 03h" to get cursor position
|
||||
* Call with %ah = 0x03
|
||||
* %bh = page
|
||||
|
@ -1321,7 +1321,7 @@ pending:
|
|||
*/
|
||||
|
||||
|
||||
FUNCTION(pupa_console_getxy)
|
||||
FUNCTION(grub_console_getxy)
|
||||
pushl %ebp
|
||||
pushl %ebx /* save EBX */
|
||||
|
||||
|
@ -1344,7 +1344,7 @@ FUNCTION(pupa_console_getxy)
|
|||
|
||||
|
||||
/*
|
||||
* void pupa_console_gotoxy(pupa_uint8_t x, pupa_uint8_t y)
|
||||
* void grub_console_gotoxy(grub_uint8_t x, grub_uint8_t y)
|
||||
* BIOS call "INT 10H Function 02h" to set cursor position
|
||||
* Call with %ah = 0x02
|
||||
* %bh = page
|
||||
|
@ -1353,7 +1353,7 @@ FUNCTION(pupa_console_getxy)
|
|||
*/
|
||||
|
||||
|
||||
FUNCTION(pupa_console_gotoxy)
|
||||
FUNCTION(grub_console_gotoxy)
|
||||
pushl %ebp
|
||||
pushl %ebx /* save EBX */
|
||||
|
||||
|
@ -1376,7 +1376,7 @@ FUNCTION(pupa_console_gotoxy)
|
|||
|
||||
|
||||
/*
|
||||
* void pupa_console_cls (void)
|
||||
* void grub_console_cls (void)
|
||||
* BIOS call "INT 10H Function 09h" to write character and attribute
|
||||
* Call with %ah = 0x09
|
||||
* %al = (character)
|
||||
|
@ -1385,7 +1385,7 @@ FUNCTION(pupa_console_gotoxy)
|
|||
* %cx = (number of times)
|
||||
*/
|
||||
|
||||
FUNCTION(pupa_console_cls)
|
||||
FUNCTION(grub_console_cls)
|
||||
pushl %ebp
|
||||
pushl %ebx /* save EBX */
|
||||
|
||||
|
@ -1417,7 +1417,7 @@ FUNCTION(pupa_console_cls)
|
|||
|
||||
|
||||
/*
|
||||
* void pupa_console_setcursor (int on)
|
||||
* void grub_console_setcursor (int on)
|
||||
* BIOS call "INT 10H Function 01h" to set cursor type
|
||||
* Call with %ah = 0x01
|
||||
* %ch = cursor starting scanline
|
||||
|
@ -1429,7 +1429,7 @@ console_cursor_state:
|
|||
console_cursor_shape:
|
||||
.word 0
|
||||
|
||||
FUNCTION(pupa_console_setcursor)
|
||||
FUNCTION(grub_console_setcursor)
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
|
||||
|
@ -1474,7 +1474,7 @@ FUNCTION(pupa_console_setcursor)
|
|||
ret
|
||||
|
||||
/*
|
||||
* pupa_getrtsecs()
|
||||
* grub_getrtsecs()
|
||||
* if a seconds value can be read, read it and return it (BCD),
|
||||
* otherwise return 0xFF
|
||||
* BIOS call "INT 1AH Function 02H" to check whether a character is pending
|
||||
|
@ -1491,7 +1491,7 @@ FUNCTION(pupa_console_setcursor)
|
|||
* (this indicates that the clock is updating, or
|
||||
* that it isn't running)
|
||||
*/
|
||||
FUNCTION(pupa_getrtsecs)
|
||||
FUNCTION(grub_getrtsecs)
|
||||
pushl %ebp
|
||||
|
||||
call prot_to_real /* enter real mode */
|
||||
|
@ -1515,11 +1515,11 @@ gottime:
|
|||
|
||||
|
||||
/*
|
||||
* pupa_get_rtc()
|
||||
* grub_get_rtc()
|
||||
* return the real time in ticks, of which there are about
|
||||
* 18-20 per second
|
||||
*/
|
||||
FUNCTION(pupa_get_rtc)
|
||||
FUNCTION(grub_get_rtc)
|
||||
pushl %ebp
|
||||
|
||||
call prot_to_real /* enter real mode */
|
||||
|
@ -1540,9 +1540,9 @@ FUNCTION(pupa_get_rtc)
|
|||
|
||||
|
||||
/*
|
||||
* unsigned char pupa_vga_set_mode (unsigned char mode)
|
||||
* unsigned char grub_vga_set_mode (unsigned char mode)
|
||||
*/
|
||||
FUNCTION(pupa_vga_set_mode)
|
||||
FUNCTION(grub_vga_set_mode)
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
movl %eax, %ecx
|
||||
|
@ -1570,9 +1570,9 @@ FUNCTION(pupa_vga_set_mode)
|
|||
|
||||
|
||||
/*
|
||||
* unsigned char *pupa_vga_get_font (void)
|
||||
* unsigned char *grub_vga_get_font (void)
|
||||
*/
|
||||
FUNCTION(pupa_vga_get_font)
|
||||
FUNCTION(grub_vga_get_font)
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue