2003-01-31 Yoshinori K. Okuji <okuji@enbug.org>
* kern/i386/pc/lzo1x.S: New file. * util/i386/pc/pupa-mkimage.c: Include lzo1x.h. (compress_kernel): New variable. (generate_image): Heavily modified to support compressing a large part of the core image. * util/misc.c (pupa_util_read_image): Fix a file descriptor leak. (pupa_util_load_image): New function. * kern/i386/pc/startup.S: Include pupa/machine/kernel.h. (pupa_compressed_size): New variable. (codestart): Enable Gate A20 here. Decompress the compressed part of the core image. Rearrange the code to put functions and variables which are required for initialization in the non-compressed part. Include lzo1x.S. * kern/i386/pc/init.c (pupa_machine_init): Don't enable Gate A20 here. * include/pupa/util/misc.h (pupa_util_write_image): Declared. * include/pupa/i386/pc/kernel.h (PUPA_KERNEL_MACHINE_COMPRESSED_SIZE): New macro. (PUPA_KERNEL_MACHINE_INSTALL_DOS_PART): Increased by 4. (PUPA_KERNEL_MACHINE_INSTALL_BSD_PART): Likewise. (PUPA_KERNEL_MACHINE_PREFIX): Likewise. (PUPA_KERNEL_MACHINE_RAW_SIZE): New macro. * conf/i386-pc.rmk (pupa_mkimage_LDFLAGS): New variable. * genmk.rb (Image#rule): Put LDFLAGS at the end of a line. (Utility#rule): Likewise. * configure.ac: Check if LZO is available.
This commit is contained in:
parent
ce5bf700ca
commit
1f5ab4280a
18 changed files with 931 additions and 298 deletions
24
util/misc.c
24
util/misc.c
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* PUPA -- Preliminary Universal Programming Architecture for GRUB
|
||||
* Copyright (C) 2002 Yoshinori K. Okuji <okuji@enbug.org>
|
||||
* Copyright (C) 2002,2003 Yoshinori K. Okuji <okuji@enbug.org>
|
||||
*
|
||||
* PUPA is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -136,9 +136,31 @@ pupa_util_read_image (const char *path)
|
|||
if (fread (img, 1, size, fp) != size)
|
||||
pupa_util_error ("cannot read %s", path);
|
||||
|
||||
fclose (fp);
|
||||
|
||||
return img;
|
||||
}
|
||||
|
||||
void
|
||||
pupa_util_load_image (const char *path, char *buf)
|
||||
{
|
||||
FILE *fp;
|
||||
size_t size;
|
||||
|
||||
pupa_util_info ("reading %s", path);
|
||||
|
||||
size = pupa_util_get_image_size (path);
|
||||
|
||||
fp = fopen (path, "rb");
|
||||
if (! fp)
|
||||
pupa_util_error ("cannot open %s", path);
|
||||
|
||||
if (fread (buf, 1, size, fp) != size)
|
||||
pupa_util_error ("cannot read %s", path);
|
||||
|
||||
fclose (fp);
|
||||
}
|
||||
|
||||
void
|
||||
pupa_util_write_image (const char *img, size_t size, FILE *out)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue