aboutsummaryrefslogtreecommitdiff
path: root/tip22/tftpload.c
diff options
context:
space:
mode:
Diffstat (limited to 'tip22/tftpload.c')
-rw-r--r--tip22/tftpload.c50
1 files changed, 24 insertions, 26 deletions
diff --git a/tip22/tftpload.c b/tip22/tftpload.c
index 2d649a0..ed31e15 100644
--- a/tip22/tftpload.c
+++ b/tip22/tftpload.c
@@ -24,8 +24,6 @@
#define ANSI_CLEAR "\033[2J"
-typedef enum { False = 0, True } Boolean;
-
extern void* __kernel_start;
extern void* __kernel_end;
extern void* __rd_start;
@@ -34,18 +32,18 @@ extern void* __rd_end;
/* convert an offset in the kernel image to an address in the loaded tftpboot image */
static void* offset2addr(unsigned long offset)
{
- void* address = (void*)((ULONG)&(__kernel_start) + offset);
+ void* address = (void*)((unsigned long)&(__kernel_start) + offset);
return address;
}
/* copy program segments to the locations the kernel expects */
-static ULONG CopyProgramSegments32(Elf32_Ehdr * header)
+static unsigned long CopyProgramSegments32(Elf32_Ehdr * header)
{
int idx;
- Boolean loaded = False;
+ int loaded = 0;
Elf32_Phdr *segment, *segments;
size_t size = header->e_phentsize * header->e_phnum;
- ULONG kernel_end=0L;
+ unsigned long kernel_end=0L;
if (size <= 0)
prom_fatal("No program segments\n\r");
@@ -79,7 +77,7 @@ static ULONG CopyProgramSegments32(Elf32_Ehdr * header)
(KSEG0ADDR(segment->
p_vaddr + segment->p_filesz)), 0, size);
}
- loaded = True;
+ loaded = 1;
}
segment =
(Elf32_Phdr *) (((char *) segment) +
@@ -93,13 +91,13 @@ static ULONG CopyProgramSegments32(Elf32_Ehdr * header)
return kernel_end;
}
-static ULONG CopyProgramSegments64(Elf64_Ehdr * header)
+static unsigned long CopyProgramSegments64(Elf64_Ehdr * header)
{
int idx;
- Boolean loaded = False;
+ int loaded = 0;
Elf64_Phdr *segment, *segments;
- ULONG size = header->e_phentsize * header->e_phnum;
- ULONG kernel_end=0L;
+ unsigned long size = header->e_phentsize * header->e_phnum;
+ unsigned long kernel_end=0L;
if (size <= 0)
prom_fatal("No program segments\n\r");
@@ -126,17 +124,17 @@ static ULONG CopyProgramSegments64(Elf64_Ehdr * header)
kernel_end = segment->p_vaddr + segment->p_memsz;
}
- size = (ULONG)segment->p_memsz - (ULONG)segment->p_filesz;
+ size = (unsigned long)segment->p_memsz - (unsigned long)segment->p_filesz;
if (size > 0) {
printf
("Zeroing memory at 0x%lx, size = 0x%lx\n\r",
- (KSEG0ADDR((ULONG)segment->p_vaddr +
- (ULONG)segment->p_filesz)), size);
+ (KSEG0ADDR((unsigned long)segment->p_vaddr +
+ (unsigned long)segment->p_filesz)), size);
memset((void *)
- (KSEG0ADDR((ULONG)segment->p_vaddr +
- (ULONG)segment->p_filesz)), 0, size);
+ (KSEG0ADDR((unsigned long)segment->p_vaddr +
+ (unsigned long)segment->p_filesz)), 0, size);
}
- loaded = True;
+ loaded = 1;
}
segment =
(Elf64_Phdr *) (((char *) segment) +
@@ -150,7 +148,7 @@ static ULONG CopyProgramSegments64(Elf64_Ehdr * header)
return kernel_end;
}
-static ULONG CopyKernel(ULONG* kernel_end)
+static unsigned long CopyKernel(unsigned long* kernel_end)
{
Elf32_Ehdr *header = (Elf32_Ehdr*)offset2addr(0L);
Elf64_Ehdr *header64 = (Elf64_Ehdr*)header;
@@ -173,7 +171,7 @@ static ULONG CopyKernel(ULONG* kernel_end)
(*kernel_end) = CopyProgramSegments32(header);
printf("Kernel entry point is 0x%lx\n\r",
- ((ULONG) KSEG0ADDR(header->e_entry)));
+ ((unsigned long) KSEG0ADDR(header->e_entry)));
return KSEG0ADDR(header->e_entry);
} else if (header->e_ident[EI_CLASS] == ELFCLASS64) {
if (header64->e_ident[EI_DATA] != ELFDATA2MSB)
@@ -190,7 +188,7 @@ static ULONG CopyKernel(ULONG* kernel_end)
(*kernel_end) = CopyProgramSegments64(header64);
printf("Kernel entry point is 0x%lx\n\r",
- ((ULONG)KSEG0ADDR(header64->e_entry)));
+ ((unsigned long)KSEG0ADDR(header64->e_entry)));
return KSEG0ADDR(header64->e_entry);
} else
prom_fatal("Neither an ELF32 nor an ELF64 kernel\n\r");
@@ -198,7 +196,7 @@ static ULONG CopyKernel(ULONG* kernel_end)
return 0L;
}
-static void copyRamdisk(void* rd_vaddr, void* rd_start, ULONG rd_size)
+static void copyRamdisk(void* rd_vaddr, void* rd_start, unsigned long rd_size)
{
printf("Copying initrd from 0x%p to 0x%p (0x%lx bytes)...\n\r",
rd_start, rd_vaddr, rd_size);
@@ -206,15 +204,15 @@ static void copyRamdisk(void* rd_vaddr, void* rd_start, ULONG rd_size)
printf("Initrd copied.\n\r");
}
-void _start(LONG argc, CHAR * argv[], CHAR * envp[])
+void _start(long argc, char * argv[], char * envp[])
{
char* nargv[3];
int nargc,i;
char argv_rd[128]; /* passed to the kernel on its commandline */
- ULONG kernel_end = 0L;
- ULONG rd_size= ((char*)&__rd_end) - ((char*)&__rd_start);
+ unsigned long kernel_end = 0L;
+ unsigned long rd_size= ((char*)&__rd_end) - ((char*)&__rd_start);
char* rd_vaddr=NULL;
- void (*kernel_entry)(int argc, CHAR * argv[], CHAR * envp[]);
+ void (*kernel_entry)(int argc, char * argv[], char * envp[]);
/* Print identification */
#if (SUBARCH == IP22)
@@ -232,7 +230,7 @@ void _start(LONG argc, CHAR * argv[], CHAR * envp[])
printf("Embedded ramdisk image starts 0x%p, ends 0x%p\n\r",
&__rd_start, &__rd_end);
#endif
- kernel_entry = (void (*)(int, CHAR *[], CHAR *[]))CopyKernel(&kernel_end);
+ kernel_entry = (void (*)(int, char *[], char *[]))CopyKernel(&kernel_end);
/* align to page boundary */
#if (SUBARCH != IP22)