From 27b207fd0a0941b03f27e2a82c0468b1a090c745 Mon Sep 17 00:00:00 2001 From: wdenk Date: Thu, 24 Jul 2003 23:38:38 +0000 Subject: * Implement new mechanism to export U-Boot's functions to standalone applications: instead of using (PPC-specific) system calls we now use a jump table; please see doc/README.standalone for details * Patch by Dave Westwood, 24 Jul 2003: added support for Unity OS (a proprietary OS) --- lib_ppc/board.c | 40 +++------------------------------------- 1 file changed, 3 insertions(+), 37 deletions(-) (limited to 'lib_ppc') diff --git a/lib_ppc/board.c b/lib_ppc/board.c index 278357d505..977d03ec7b 100644 --- a/lib_ppc/board.c +++ b/lib_ppc/board.c @@ -26,7 +26,6 @@ #include #include #include -#include #ifdef CONFIG_8xx #include #endif @@ -156,37 +155,6 @@ char *strmhz (char *buf, long hz) return (buf); } -static void syscalls_init (void) -{ - ulong *addr; - - syscall_tbl[SYSCALL_MALLOC] = (void *) malloc; - syscall_tbl[SYSCALL_FREE] = (void *) free; - - syscall_tbl[SYSCALL_INSTALL_HDLR] = (void *) irq_install_handler; - syscall_tbl[SYSCALL_FREE_HDLR] = (void *) irq_free_handler; - syscall_tbl[SYSCALL_GET_TIMER] = (void *)get_timer; - syscall_tbl[SYSCALL_UDELAY] = (void *)udelay; - - addr = (ulong *) 0xc00; /* syscall ISR addr */ - - /* patch ISR code */ - *addr++ |= (ulong) syscall_tbl >> 16; - *addr++ |= (ulong) syscall_tbl & 0xFFFF; - *addr++ |= NR_SYSCALLS >> 16; - *addr++ |= NR_SYSCALLS & 0xFFFF; - -#ifndef CONFIG_5XX - flush_cache (0x0C00, 0x10); -#endif - /* Initialize syscalls stack pointer */ - addr = (ulong *) 0xCFC; - *addr = (ulong)addr; -#ifndef CONFIG_5xx - flush_cache ((ulong)addr, 0x10); -#endif -} - /* * All attempts to come up with a "common" initialization sequence * that works for all boards and architectures failed: some of the @@ -543,7 +511,7 @@ void board_init_f (ulong bootflag) WATCHDOG_RESET(); - memcpy (id, gd, sizeof (gd_t)); + memcpy (id, (void *)gd, sizeof (gd_t)); relocate_code (addr_sp, id, addr); @@ -798,13 +766,11 @@ void board_init_r (gd_t *id, ulong dest_addr) /* Initialize devices */ devices_init (); - /* allocate syscalls table (console_init_r will fill it in */ - syscall_tbl = (void **) malloc (NR_SYSCALLS * sizeof (void *)); + /* Initialize the jump table for applications */ + jumptable_init (); /* Initialize the console (after the relocation and devices init) */ console_init_r (); -/** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **/ - syscalls_init (); #if defined(CONFIG_CCM) || \ defined(CONFIG_COGENT) || \ -- cgit v1.2.1