forked from pool/elilo
476 lines
14 KiB
Diff
476 lines
14 KiB
Diff
diff -ur elilo-3.8/Make.defaults elilo/Make.defaults
|
|
--- elilo-3.8/Make.defaults 2007-07-20 21:47:25.000000000 +0200
|
|
+++ elilo/Make.defaults 2008-01-12 00:53:33.000000000 +0100
|
|
@@ -68,7 +68,7 @@
|
|
|
|
OPTIMFLAGS = -O2
|
|
DEBUGFLAGS = -Wall
|
|
-CFLAGS = $(OPTIMFLAGS) -fpic -fshort-wchar $(DEBUGFLAGS)
|
|
+CFLAGS = $(OPTIMFLAGS) -fno-strict-aliasing -fpic -fshort-wchar $(DEBUGFLAGS)
|
|
LDFLAGS = -nostdlib -znocombreloc
|
|
INSTALL = install
|
|
|
|
diff -ur elilo-3.8/alternate.c elilo/alternate.c
|
|
--- elilo-3.8/alternate.c 2007-07-20 21:47:26.000000000 +0200
|
|
+++ elilo/alternate.c 2008-01-12 00:53:33.000000000 +0100
|
|
@@ -56,7 +56,7 @@
|
|
* Please note that no fatal error is reported by this function
|
|
*/
|
|
INTN
|
|
-alternate_kernel(CHAR16 *buffer, INTN size)
|
|
+alternate_kernel(CHAR16 *buffer, UINTN size)
|
|
{
|
|
EFI_STATUS status;
|
|
INTN ret = -1;
|
|
diff -ur elilo-3.8/choosers/simple.c elilo/choosers/simple.c
|
|
--- elilo-3.8/choosers/simple.c 2007-07-20 21:47:26.000000000 +0200
|
|
+++ elilo/choosers/simple.c 2008-01-12 00:53:33.000000000 +0100
|
|
@@ -220,7 +220,7 @@
|
|
{
|
|
fops_fd_t fd;
|
|
EFI_STATUS status;
|
|
- INTN len, i;
|
|
+ UINTN len, i;
|
|
CHAR16 *filename;
|
|
CHAR8 buf[256];
|
|
|
|
diff -ur elilo-3.8/choosers/textmenu.c elilo/choosers/textmenu.c
|
|
--- elilo-3.8/choosers/textmenu.c 2007-07-20 21:47:26.000000000 +0200
|
|
+++ elilo/choosers/textmenu.c 2008-01-12 00:53:33.000000000 +0100
|
|
@@ -186,12 +186,12 @@
|
|
}
|
|
|
|
static INTN
|
|
-read_message_file(INTN msg, INT8 *buf, INTN max)
|
|
+read_message_file(INTN msg, UINT8 *buf, UINTN max)
|
|
{
|
|
CHAR16 *filename;
|
|
fops_fd_t message_fd;
|
|
EFI_STATUS status;
|
|
- INTN len = max;
|
|
+ UINTN len = max;
|
|
|
|
if (msg > 10) return 0;
|
|
|
|
diff -ur elilo-3.8/elilo.h elilo/elilo.h
|
|
--- elilo-3.8/elilo.h 2005-12-01 22:42:59.000000000 +0100
|
|
+++ elilo/elilo.h 2008-01-12 00:53:33.000000000 +0100
|
|
@@ -183,7 +183,7 @@
|
|
extern INTN load_file(CHAR16 *, memdesc_t *);
|
|
|
|
/* from alternate.c */
|
|
-extern INTN alternate_kernel(CHAR16 *, INTN);
|
|
+extern INTN alternate_kernel(CHAR16 *, UINTN);
|
|
|
|
/* from bootparams.c */
|
|
extern VOID *create_boot_params (CHAR16 *, memdesc_t *, memdesc_t *, UINTN *);
|
|
diff -ur elilo-3.8/ia32/gzip.c elilo/ia32/gzip.c
|
|
--- elilo-3.8/ia32/gzip.c 2005-12-01 22:42:59.000000000 +0100
|
|
+++ elilo/ia32/gzip.c 2008-01-13 01:12:19.000000000 +0100
|
|
@@ -153,7 +153,7 @@
|
|
int
|
|
fill_inbuf(void)
|
|
{
|
|
- INTN expected, nread;
|
|
+ UINTN expected, nread;
|
|
EFI_STATUS status;
|
|
|
|
expected = nread = INBUFSIZE;
|
|
@@ -277,7 +277,7 @@
|
|
* the relevant header information.
|
|
*/
|
|
int
|
|
-first_block (const char *buf, long blocksize)
|
|
+first_block (const unsigned char *buf, long blocksize)
|
|
{
|
|
Elf32_Ehdr *elf;
|
|
Elf32_Phdr *phdrs;
|
|
@@ -430,7 +430,7 @@
|
|
static const CHAR8 helicopter[4] = { '|' , '/' , '-' , '\\' };
|
|
static UINTN heli_count;
|
|
struct segment *cp;
|
|
- char *src, *dst;
|
|
+ unsigned char *src, *dst;
|
|
long cnt;
|
|
|
|
if (!outcnt) return;
|
|
@@ -468,7 +468,7 @@
|
|
file_offset += skip;
|
|
outcnt -= skip;
|
|
}
|
|
- dst = (char *)cp->addr + (file_offset - cp->offset);
|
|
+ dst = (unsigned char *)cp->addr + (file_offset - cp->offset);
|
|
cnt = cp->offset + cp->size - file_offset;
|
|
if (cnt > outcnt)
|
|
cnt = outcnt;
|
|
@@ -482,7 +482,7 @@
|
|
/* See if we are at the end of this chunk */
|
|
if (file_offset == cp->offset + cp->size) {
|
|
if (cp->bss_sz) {
|
|
- dst = (char *)cp->addr + cp->size;
|
|
+ dst = (unsigned char *)cp->addr + cp->size;
|
|
Memset(dst, 0, cp->bss_sz);
|
|
}
|
|
nextchunk();
|
|
diff -ur elilo-3.8/ia32/system.c elilo/ia32/system.c
|
|
--- elilo-3.8/ia32/system.c 2008-01-03 22:48:03.000000000 +0100
|
|
+++ elilo/ia32/system.c 2008-01-14 00:31:57.000000000 +0100
|
|
@@ -163,10 +163,11 @@
|
|
EFI_GUID GopProtocol = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
|
|
EFI_GRAPHICS_OUTPUT_PROTOCOL *Gop_interface;
|
|
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Gop_info;
|
|
- EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Gop_mode;
|
|
- EFI_HANDLE *Gop_handle;
|
|
+ EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Gop_mode = NULL;
|
|
+ EFI_HANDLE *Gop_handle = NULL;
|
|
EFI_STATUS efi_status;
|
|
- UINTN size, size1;
|
|
+ UINTN size = 0;
|
|
+ UINTN size1;
|
|
UINT8 i;
|
|
|
|
efi_status = uefi_call_wrapper(
|
|
@@ -204,7 +205,7 @@
|
|
3,
|
|
*Gop_handle,
|
|
&GopProtocol,
|
|
- &Gop_interface);
|
|
+ (VOID **) &Gop_interface);
|
|
|
|
if (EFI_ERROR(efi_status)) {
|
|
continue;
|
|
diff -ur elilo-3.8/ia64/fpswa.c elilo/ia64/fpswa.c
|
|
--- elilo-3.8/ia64/fpswa.c 2003-08-19 18:46:09.000000000 +0200
|
|
+++ elilo/ia64/fpswa.c 2008-01-12 00:53:33.000000000 +0100
|
|
@@ -132,7 +132,7 @@
|
|
#endif
|
|
};
|
|
UINTN j, count = sizeof(fpswa_filenames)/sizeof(CHAR16 *);
|
|
- INTN cookie;
|
|
+ UINTN cookie;
|
|
CHAR16 devname[FILENAME_MAXLEN];
|
|
|
|
if (fpswa_file) {
|
|
diff -ur elilo-3.8/ia64/gzip.c elilo/ia64/gzip.c
|
|
--- elilo-3.8/ia64/gzip.c 2005-12-01 22:42:59.000000000 +0100
|
|
+++ elilo/ia64/gzip.c 2008-01-12 00:53:33.000000000 +0100
|
|
@@ -161,7 +161,7 @@
|
|
int
|
|
fill_inbuf(void)
|
|
{
|
|
- INTN expected, nread;
|
|
+ UINTN expected, nread;
|
|
EFI_STATUS status;
|
|
|
|
expected = nread = INBUFSIZE;
|
|
@@ -309,7 +309,7 @@
|
|
* the relevant header information.
|
|
*/
|
|
int
|
|
-first_block (const char *buf, long blocksize)
|
|
+first_block (const unsigned char *buf, long blocksize)
|
|
{
|
|
Elf64_Ehdr *elf;
|
|
Elf64_Phdr *phdrs;
|
|
@@ -439,7 +439,7 @@
|
|
if (alloc_kmem((void *)low_addr, pages) == -1) {
|
|
VOID *new_addr;
|
|
|
|
- VERB_PRT(1, (L"%s : AllocatePages(%d, 0x%lx) for kernel failed\n", LD_NAME, pages, low_addr));
|
|
+ VERB_PRT(1, Print(L"%s : AllocatePages(%d, 0x%lx) for kernel failed\n", LD_NAME, pages, low_addr));
|
|
|
|
if (ia64_can_relocate() == 0) {
|
|
ERR_PRT((L"relocation is disabled, cannot load kernel"));
|
|
@@ -464,7 +464,7 @@
|
|
/* unsigned arithmetic */
|
|
load_offset = (UINTN) (new_addr - ROUNDDOWN((UINTN) low_addr,256*MB));
|
|
|
|
- VERB_PRT(1, (L"low_addr=0x%lx new_addr=0x%lx offset=0x%lx", low_addr, new_addr, load_offset));
|
|
+ VERB_PRT(1, Print(L"low_addr=0x%lx new_addr=0x%lx offset=0x%lx", low_addr, new_addr, load_offset));
|
|
|
|
/*
|
|
* correct various addresses for non-zero load_offset
|
|
@@ -526,7 +526,7 @@
|
|
static const CHAR8 helicopter[4] = { '|' , '/' , '-' , '\\' };
|
|
static UINTN heli_count;
|
|
struct segment *cp;
|
|
- char *src, *dst;
|
|
+ unsigned char *src, *dst;
|
|
long cnt;
|
|
|
|
if (!outcnt) return;
|
|
@@ -565,7 +565,7 @@
|
|
file_offset += skip;
|
|
outcnt -= skip;
|
|
}
|
|
- dst = (char *)cp->addr + (file_offset - cp->offset);
|
|
+ dst = (unsigned char *)cp->addr + (file_offset - cp->offset);
|
|
|
|
cnt = cp->offset + cp->size - file_offset;
|
|
|
|
@@ -582,7 +582,7 @@
|
|
/* See if we are at the end of this chunk */
|
|
if (file_offset == cp->offset + cp->size) {
|
|
if (cp->bss_sz) {
|
|
- dst = (char *)cp->addr + cp->size;
|
|
+ dst = (unsigned char *)cp->addr + cp->size;
|
|
Memset(dst, 0, cp->bss_sz);
|
|
}
|
|
nextchunk();
|
|
diff -ur elilo-3.8/ia64/longjmp.S elilo/ia64/longjmp.S
|
|
--- elilo-3.8/ia64/longjmp.S 2002-01-13 17:00:08.000000000 +0100
|
|
+++ elilo/ia64/longjmp.S 2008-01-27 01:42:24.000000000 +0100
|
|
@@ -159,4 +159,4 @@
|
|
invala // virt. -> phys. regnum mapping may change
|
|
mov pr=r24,-1
|
|
br.ret.dptk.few rp
|
|
- .endp __longjmp
|
|
+ .endp longjmp
|
|
diff -ur elilo-3.8/ia64/plain_loader.c elilo/ia64/plain_loader.c
|
|
--- elilo-3.8/ia64/plain_loader.c 2005-09-16 18:25:52.000000000 +0200
|
|
+++ elilo/ia64/plain_loader.c 2008-01-12 00:53:33.000000000 +0100
|
|
@@ -288,7 +288,7 @@
|
|
if (alloc_kmem(low_addr, pages) == -1) {
|
|
VOID *new_addr;
|
|
|
|
- VERB_PRT(1, (L"%s : AllocatePages(%d, 0x%lx) for kernel failed\n", LD_NAME, pages, low_addr));
|
|
+ VERB_PRT(1, Print(L"%s : AllocatePages(%d, 0x%lx) for kernel failed\n", LD_NAME, pages, low_addr));
|
|
|
|
if (ia64_can_relocate() == 0) {
|
|
ERR_PRT((L"relocation is disabled, cannot load kernel"));
|
|
diff -ur elilo-3.8/ia64/setjmp.S elilo/ia64/setjmp.S
|
|
--- elilo-3.8/ia64/setjmp.S 2005-05-10 01:22:04.000000000 +0200
|
|
+++ elilo/ia64/setjmp.S 2008-01-27 01:42:24.000000000 +0100
|
|
@@ -81,6 +81,7 @@
|
|
.proc __sigsetjmp
|
|
__sigsetjmp:
|
|
//.prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(2)
|
|
+ .body
|
|
alloc loc1=ar.pfs,2,2,2,0
|
|
mov r16=ar.unat
|
|
;;
|
|
@@ -89,6 +90,7 @@
|
|
add r3=8,in0
|
|
;;
|
|
st8.spill.nta [r2]=sp,16 // r12 (sp)
|
|
+ ;;
|
|
st8.spill.nta [r3]=gp,16 // r1 (gp)
|
|
;;
|
|
st8.nta [r2]=r16,16 // save caller's unat
|
|
@@ -96,13 +98,13 @@
|
|
add r8=0xa0,in0
|
|
;;
|
|
st8.spill.nta [r2]=r4,16 // r4
|
|
+ ;;
|
|
st8.spill.nta [r3]=r5,16 // r5
|
|
add r9=0xb0,in0
|
|
;;
|
|
stf.spill.nta [r8]=f2,32
|
|
stf.spill.nta [r9]=f3,32
|
|
mov loc0=rp
|
|
- .body
|
|
;;
|
|
stf.spill.nta [r8]=f4,32
|
|
stf.spill.nta [r9]=f5,32
|
|
@@ -139,6 +141,7 @@
|
|
stf.spill.nta [r9]=f31
|
|
|
|
st8.spill.nta [r2]=r6,16 // r6
|
|
+ ;;
|
|
st8.spill.nta [r3]=r7,16 // r7
|
|
;;
|
|
mov r23=ar.bsp
|
|
diff -ur elilo-3.8/ia64/sysdeps.h elilo/ia64/sysdeps.h
|
|
--- elilo-3.8/ia64/sysdeps.h 2005-12-01 22:42:59.000000000 +0100
|
|
+++ elilo/ia64/sysdeps.h 2008-01-12 00:53:34.000000000 +0100
|
|
@@ -86,7 +86,7 @@
|
|
asm volatile ("mov r28=%1; br.sptk.few %0" :: "b"(kentry),"r"(bp));
|
|
}
|
|
|
|
-static inline const UINT64
|
|
+static inline UINT64
|
|
__ia64_swab64 (UINT64 x)
|
|
{
|
|
UINT64 result;
|
|
@@ -95,13 +95,13 @@
|
|
return result;
|
|
}
|
|
|
|
-static inline const UINT32
|
|
+static inline UINT32
|
|
__ia64_swab32 (UINT32 x)
|
|
{
|
|
return __ia64_swab64(x) >> 32;
|
|
}
|
|
|
|
-static inline const UINT16
|
|
+static inline UINT16
|
|
__ia64_swab16(UINT16 x)
|
|
{
|
|
return __ia64_swab64(x) >> 48;
|
|
diff -ur elilo-3.8/inflate.c elilo/inflate.c
|
|
--- elilo-3.8/inflate.c 2005-12-01 22:42:59.000000000 +0100
|
|
+++ elilo/inflate.c 2008-01-15 02:03:19.000000000 +0100
|
|
@@ -1094,10 +1094,10 @@
|
|
error("Input has invalid flags\n");
|
|
return -1;
|
|
}
|
|
- (ulg)get_byte(); /* Get timestamp */
|
|
- ((ulg)get_byte()) << 8;
|
|
- ((ulg)get_byte()) << 16;
|
|
- ((ulg)get_byte()) << 24;
|
|
+ (void)get_byte(); /* Get timestamp - 4 bytes */
|
|
+ (void)get_byte();
|
|
+ (void)get_byte();
|
|
+ (void)get_byte();
|
|
|
|
(void)get_byte(); /* Ignore extra flags for the moment */
|
|
(void)get_byte(); /* Ignore OS type for the moment */
|
|
diff -ur elilo-3.8/util.c elilo/util.c
|
|
--- elilo-3.8/util.c 2007-07-20 21:47:26.000000000 +0200
|
|
+++ elilo/util.c 2008-01-12 00:53:33.000000000 +0100
|
|
@@ -248,7 +248,7 @@
|
|
INTN
|
|
read_file(UINTN fd, UINTN total_size, CHAR8 *buffer)
|
|
{
|
|
- INTN size, j=0;
|
|
+ UINTN size, j=0;
|
|
EFI_STATUS status;
|
|
CHAR16 helicopter[4] = { L'|' , L'/' , L'-' , L'\\' };
|
|
INTN ret = ELILO_LOAD_SUCCESS;
|
|
diff -ur elilo-3.8/x86_64/gzip.c elilo/x86_64/gzip.c
|
|
--- elilo-3.8/x86_64/gzip.c 2007-07-20 21:47:27.000000000 +0200
|
|
+++ elilo/x86_64/gzip.c 2008-01-15 02:03:19.000000000 +0100
|
|
@@ -156,7 +156,7 @@
|
|
int
|
|
fill_inbuf(void)
|
|
{
|
|
- INTN expected, nread;
|
|
+ UINTN expected, nread;
|
|
EFI_STATUS status;
|
|
|
|
expected = nread = INBUFSIZE;
|
|
@@ -280,7 +280,7 @@
|
|
* the relevant header information.
|
|
*/
|
|
int
|
|
-first_block (const char *buf, long blocksize)
|
|
+first_block (const unsigned char *buf, long blocksize)
|
|
{
|
|
Elf64_Ehdr *elf;
|
|
Elf64_Phdr *phdrs;
|
|
@@ -433,7 +433,7 @@
|
|
static const CHAR8 helicopter[4] = { '|' , '/' , '-' , '\\' };
|
|
static UINTN heli_count;
|
|
struct segment *cp;
|
|
- char *src, *dst;
|
|
+ unsigned char *src, *dst;
|
|
long cnt;
|
|
|
|
if (!outcnt) return;
|
|
@@ -471,7 +471,7 @@
|
|
file_offset += skip;
|
|
outcnt -= skip;
|
|
}
|
|
- dst = (char *)cp->addr + (file_offset - cp->offset);
|
|
+ dst = (unsigned char *)cp->addr + (file_offset - cp->offset);
|
|
cnt = cp->offset + cp->size - file_offset;
|
|
if (cnt > outcnt)
|
|
cnt = outcnt;
|
|
@@ -485,7 +485,7 @@
|
|
/* See if we are at the end of this chunk */
|
|
if (file_offset == cp->offset + cp->size) {
|
|
if (cp->bss_sz) {
|
|
- dst = (char *)cp->addr + cp->size;
|
|
+ dst = (unsigned char *)cp->addr + cp->size;
|
|
Memset(dst, 0, cp->bss_sz);
|
|
}
|
|
nextchunk();
|
|
diff -ur elilo-3.8/x86_64/sysdeps.h elilo/x86_64/sysdeps.h
|
|
--- elilo-3.8/x86_64/sysdeps.h 2007-12-19 23:52:22.000000000 +0100
|
|
+++ elilo/x86_64/sysdeps.h 2008-01-15 02:03:19.000000000 +0100
|
|
@@ -370,8 +370,8 @@
|
|
UINT32 kernel_entry;
|
|
UINT16 kernel_cs;
|
|
} jumpvector;
|
|
- UINTN njump;
|
|
VOID *jump_start;
|
|
+ uint64_t temp;
|
|
|
|
/*
|
|
* Disable interrupts.
|
|
@@ -383,7 +383,8 @@
|
|
*/
|
|
|
|
if (bp->s.initrd_start) {
|
|
- MEMCPY(INITRD_START, bp->s.initrd_start, bp->s.initrd_size);
|
|
+ temp = bp->s.initrd_start;
|
|
+ MEMCPY(INITRD_START, temp , bp->s.initrd_size);
|
|
bp->s.initrd_start = INITRD_START;
|
|
}
|
|
/*
|
|
@@ -434,14 +435,15 @@
|
|
|
|
/*
|
|
* Jump to kernel entry point.
|
|
+ *
|
|
+ * Cast is to tell gcc that we know we're going from
|
|
+ * 64-bit ptr to 32-bit integer.
|
|
*/
|
|
- jumpvector.kernel_entry=kentry;
|
|
+ jumpvector.kernel_entry=(UINT32)((UINT64)kentry);
|
|
jumpvector.kernel_cs=0x10;
|
|
- njump = &jumpvector;
|
|
jump_start = (VOID *)&jumpvector;
|
|
//asm volatile ( "mov %0, %%rcx" : : "m" (&jumpvector) );
|
|
asm volatile ( "mov %0, %%rcx" : : "m" (jump_start) );
|
|
- //asm volatile ( "mov %0, %%rcx" : : "m" (njump) );
|
|
asm volatile ( "ljmp *(%%rcx)" : :);
|
|
/* Never come back to here. */
|
|
}
|
|
diff -ur elilo-3.8/x86_64/system.c elilo/x86_64/system.c
|
|
--- elilo-3.8/x86_64/system.c 2008-01-03 22:48:03.000000000 +0100
|
|
+++ elilo/x86_64/system.c 2008-01-15 02:03:19.000000000 +0100
|
|
@@ -160,7 +160,7 @@
|
|
mmap_desc_t md;
|
|
|
|
ZeroMem(&md, sizeof md);
|
|
- md.md = (VOID *)bp->s.efi_mem_map;
|
|
+ md.md = (VOID *)(UINT64)bp->s.efi_mem_map;
|
|
free_memmap(&md);
|
|
}
|
|
|
|
@@ -189,10 +189,11 @@
|
|
EFI_GUID GopProtocol = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
|
|
EFI_GRAPHICS_OUTPUT_PROTOCOL *Gop_interface;
|
|
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Gop_info;
|
|
- EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Gop_mode;
|
|
- EFI_HANDLE *Gop_handle;
|
|
+ EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Gop_mode = NULL;
|
|
+ EFI_HANDLE *Gop_handle = NULL;
|
|
EFI_STATUS efi_status;
|
|
- UINTN size, size1;
|
|
+ UINTN size = 0;
|
|
+ UINTN size1;
|
|
UINT8 i;
|
|
|
|
efi_status = uefi_call_wrapper(
|
|
@@ -554,7 +555,7 @@
|
|
|
|
if (initrd->start_addr && initrd->pgcnt) {
|
|
/* %%TBD - This will probably have to be changed. */
|
|
- bp->s.initrd_start = (UINT32)initrd->start_addr;
|
|
+ bp->s.initrd_start = (UINT32)(UINT64)initrd->start_addr;
|
|
bp->s.initrd_size = (UINT32)(initrd->size);
|
|
/*
|
|
* This is the RAMdisk root device for RedHat 2.2.x
|
|
@@ -598,7 +599,7 @@
|
|
/*
|
|
* Kernel entry point.
|
|
*/
|
|
- bp->s.kernel_start = (UINT32)kernel_start;
|
|
+ bp->s.kernel_start = (UINT32)(UINT64)kernel_start;
|
|
|
|
/*
|
|
* When changing stuff in the parameter structure compare
|