diff options
Diffstat (limited to 'qemu/roms/u-boot/arch/mips/lib')
-rw-r--r-- | qemu/roms/u-boot/arch/mips/lib/Makefile | 15 | ||||
-rw-r--r-- | qemu/roms/u-boot/arch/mips/lib/ashldi3.c | 25 | ||||
-rw-r--r-- | qemu/roms/u-boot/arch/mips/lib/ashrdi3.c | 27 | ||||
-rw-r--r-- | qemu/roms/u-boot/arch/mips/lib/board.c | 320 | ||||
-rw-r--r-- | qemu/roms/u-boot/arch/mips/lib/bootm.c | 252 | ||||
-rw-r--r-- | qemu/roms/u-boot/arch/mips/lib/io.c | 12 | ||||
-rw-r--r-- | qemu/roms/u-boot/arch/mips/lib/libgcc.h | 25 | ||||
-rw-r--r-- | qemu/roms/u-boot/arch/mips/lib/lshrdi3.c | 25 |
8 files changed, 0 insertions, 701 deletions
diff --git a/qemu/roms/u-boot/arch/mips/lib/Makefile b/qemu/roms/u-boot/arch/mips/lib/Makefile deleted file mode 100644 index e483e86f6..000000000 --- a/qemu/roms/u-boot/arch/mips/lib/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -# -# (C) Copyright 2003-2006 -# Wolfgang Denk, DENX Software Engineering, wd@denx.de. -# -# SPDX-License-Identifier: GPL-2.0+ -# - -ifndef CONFIG_SYS_GENERIC_BOARD -obj-y += board.o -endif -obj-y += io.o - -obj-$(CONFIG_CMD_BOOTM) += bootm.o - -lib-$(CONFIG_USE_PRIVATE_LIBGCC) += ashldi3.o ashrdi3.o lshrdi3.o diff --git a/qemu/roms/u-boot/arch/mips/lib/ashldi3.c b/qemu/roms/u-boot/arch/mips/lib/ashldi3.c deleted file mode 100644 index 9b50d866a..000000000 --- a/qemu/roms/u-boot/arch/mips/lib/ashldi3.c +++ /dev/null @@ -1,25 +0,0 @@ -#include "libgcc.h" - -long long __ashldi3(long long u, word_type b) -{ - DWunion uu, w; - word_type bm; - - if (b == 0) - return u; - - uu.ll = u; - bm = 32 - b; - - if (bm <= 0) { - w.s.low = 0; - w.s.high = (unsigned int) uu.s.low << -bm; - } else { - const unsigned int carries = (unsigned int) uu.s.low >> bm; - - w.s.low = (unsigned int) uu.s.low << b; - w.s.high = ((unsigned int) uu.s.high << b) | carries; - } - - return w.ll; -} diff --git a/qemu/roms/u-boot/arch/mips/lib/ashrdi3.c b/qemu/roms/u-boot/arch/mips/lib/ashrdi3.c deleted file mode 100644 index f30359b73..000000000 --- a/qemu/roms/u-boot/arch/mips/lib/ashrdi3.c +++ /dev/null @@ -1,27 +0,0 @@ -#include "libgcc.h" - -long long __ashrdi3(long long u, word_type b) -{ - DWunion uu, w; - word_type bm; - - if (b == 0) - return u; - - uu.ll = u; - bm = 32 - b; - - if (bm <= 0) { - /* w.s.high = 1..1 or 0..0 */ - w.s.high = - uu.s.high >> 31; - w.s.low = uu.s.high >> -bm; - } else { - const unsigned int carries = (unsigned int) uu.s.high << bm; - - w.s.high = uu.s.high >> b; - w.s.low = ((unsigned int) uu.s.low >> b) | carries; - } - - return w.ll; -} diff --git a/qemu/roms/u-boot/arch/mips/lib/board.c b/qemu/roms/u-boot/arch/mips/lib/board.c deleted file mode 100644 index 3feb02071..000000000 --- a/qemu/roms/u-boot/arch/mips/lib/board.c +++ /dev/null @@ -1,320 +0,0 @@ -/* - * (C) Copyright 2003 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * SPDX-License-Identifier: GPL-2.0+ - */ - -#include <common.h> -#include <command.h> -#include <malloc.h> -#include <serial.h> -#include <stdio_dev.h> -#include <version.h> -#include <net.h> -#include <environment.h> -#include <nand.h> -#include <onenand_uboot.h> -#include <spi.h> - -#ifdef CONFIG_BITBANGMII -#include <miiphy.h> -#endif - -DECLARE_GLOBAL_DATA_PTR; - -ulong monitor_flash_len; - -static char *failed = "*** failed ***\n"; - -int __board_early_init_f(void) -{ - /* - * Nothing to do in this dummy implementation - */ - return 0; -} -int board_early_init_f(void) - __attribute__((weak, alias("__board_early_init_f"))); - -static int init_func_ram(void) -{ -#ifdef CONFIG_BOARD_TYPES - int board_type = gd->board_type; -#else - int board_type = 0; /* use dummy arg */ -#endif - puts("DRAM: "); - - gd->ram_size = initdram(board_type); - if (gd->ram_size > 0) { - print_size(gd->ram_size, "\n"); - return 0; - } - puts(failed); - return 1; -} - -static int display_banner(void) -{ - - printf("\n\n%s\n\n", version_string); - return 0; -} - -#ifndef CONFIG_SYS_NO_FLASH -static void display_flash_config(ulong size) -{ - puts("Flash: "); - print_size(size, "\n"); -} -#endif - -static int init_baudrate(void) -{ - gd->baudrate = getenv_ulong("baudrate", 10, CONFIG_BAUDRATE); - return 0; -} - - -/* - * Breath some life into the board... - * - * The first part of initialization is running from Flash memory; - * its main purpose is to initialize the RAM so that we - * can relocate the monitor code to RAM. - */ - -/* - * All attempts to come up with a "common" initialization sequence - * that works for all boards and architectures failed: some of the - * requirements are just _too_ different. To get rid of the resulting - * mess of board dependend #ifdef'ed code we now make the whole - * initialization sequence configurable to the user. - * - * The requirements for any new initalization function is simple: it - * receives a pointer to the "global data" structure as it's only - * argument, and returns an integer return code, where 0 means - * "continue" and != 0 means "fatal error, hang the system". - */ -typedef int (init_fnc_t)(void); - -init_fnc_t *init_sequence[] = { - board_early_init_f, - timer_init, - env_init, /* initialize environment */ - init_baudrate, /* initialize baudrate settings */ - serial_init, /* serial communications setup */ - console_init_f, - display_banner, /* say that we are here */ - checkboard, - init_func_ram, - NULL, -}; - - -void board_init_f(ulong bootflag) -{ - gd_t gd_data, *id; - bd_t *bd; - init_fnc_t **init_fnc_ptr; - ulong addr, addr_sp, len; - ulong *s; - - /* Pointer is writable since we allocated a register for it. - */ - gd = &gd_data; - /* compiler optimization barrier needed for GCC >= 3.4 */ - __asm__ __volatile__("" : : : "memory"); - - memset((void *)gd, 0, sizeof(gd_t)); - - for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) { - if ((*init_fnc_ptr)() != 0) - hang(); - } - - /* - * Now that we have DRAM mapped and working, we can - * relocate the code and continue running from DRAM. - */ - addr = CONFIG_SYS_SDRAM_BASE + gd->ram_size; - - /* We can reserve some RAM "on top" here. - */ - - /* round down to next 4 kB limit. - */ - addr &= ~(4096 - 1); - debug("Top of RAM usable for U-Boot at: %08lx\n", addr); - - /* Reserve memory for U-Boot code, data & bss - * round down to next 16 kB limit - */ - len = bss_end() - CONFIG_SYS_MONITOR_BASE; - addr -= len; - addr &= ~(16 * 1024 - 1); - - debug("Reserving %ldk for U-Boot at: %08lx\n", len >> 10, addr); - - /* Reserve memory for malloc() arena. - */ - addr_sp = addr - TOTAL_MALLOC_LEN; - debug("Reserving %dk for malloc() at: %08lx\n", - TOTAL_MALLOC_LEN >> 10, addr_sp); - - /* - * (permanently) allocate a Board Info struct - * and a permanent copy of the "global" data - */ - addr_sp -= sizeof(bd_t); - bd = (bd_t *)addr_sp; - gd->bd = bd; - debug("Reserving %zu Bytes for Board Info at: %08lx\n", - sizeof(bd_t), addr_sp); - - addr_sp -= sizeof(gd_t); - id = (gd_t *)addr_sp; - debug("Reserving %zu Bytes for Global Data at: %08lx\n", - sizeof(gd_t), addr_sp); - - /* Reserve memory for boot params. - */ - addr_sp -= CONFIG_SYS_BOOTPARAMS_LEN; - bd->bi_boot_params = addr_sp; - debug("Reserving %dk for boot params() at: %08lx\n", - CONFIG_SYS_BOOTPARAMS_LEN >> 10, addr_sp); - - /* - * Finally, we set up a new (bigger) stack. - * - * Leave some safety gap for SP, force alignment on 16 byte boundary - * Clear initial stack frame - */ - addr_sp -= 16; - addr_sp &= ~0xF; - s = (ulong *)addr_sp; - *s-- = 0; - *s-- = 0; - addr_sp = (ulong)s; - debug("Stack Pointer at: %08lx\n", addr_sp); - - /* - * Save local variables to board info struct - */ - bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; /* start of DRAM */ - bd->bi_memsize = gd->ram_size; /* size of DRAM in bytes */ - - memcpy(id, (void *)gd, sizeof(gd_t)); - - relocate_code(addr_sp, id, addr); - - /* NOTREACHED - relocate_code() does not return */ -} - -/* - * This is the next part if the initialization sequence: we are now - * running from RAM and have a "normal" C environment, i. e. global - * data can be written, BSS has been cleared, the stack size in not - * that critical any more, etc. - */ - -void board_init_r(gd_t *id, ulong dest_addr) -{ -#ifndef CONFIG_SYS_NO_FLASH - ulong size; -#endif - bd_t *bd; - - gd = id; - gd->flags |= GD_FLG_RELOC; /* tell others: relocation done */ - - debug("Now running in RAM - U-Boot at: %08lx\n", dest_addr); - - gd->reloc_off = dest_addr - CONFIG_SYS_MONITOR_BASE; - - monitor_flash_len = image_copy_end() - dest_addr; - - serial_initialize(); - - bd = gd->bd; - - /* The Malloc area is immediately below the monitor copy in DRAM */ - mem_malloc_init(CONFIG_SYS_MONITOR_BASE + gd->reloc_off - - TOTAL_MALLOC_LEN, TOTAL_MALLOC_LEN); - -#ifndef CONFIG_SYS_NO_FLASH - /* configure available FLASH banks */ - size = flash_init(); - display_flash_config(size); - bd->bi_flashstart = CONFIG_SYS_FLASH_BASE; - bd->bi_flashsize = size; - -#if CONFIG_SYS_MONITOR_BASE == CONFIG_SYS_FLASH_BASE - bd->bi_flashoffset = monitor_flash_len; /* reserved area for U-Boot */ -#else - bd->bi_flashoffset = 0; -#endif -#else - bd->bi_flashstart = 0; - bd->bi_flashsize = 0; - bd->bi_flashoffset = 0; -#endif - -#ifdef CONFIG_CMD_NAND - puts("NAND: "); - nand_init(); /* go init the NAND */ -#endif - -#if defined(CONFIG_CMD_ONENAND) - onenand_init(); -#endif - - /* relocate environment function pointers etc. */ - env_relocate(); - -#if defined(CONFIG_PCI) - /* - * Do pci configuration - */ - pci_init(); -#endif - -/** leave this here (after malloc(), environment and PCI are working) **/ - /* Initialize stdio devices */ - stdio_init(); - - jumptable_init(); - - /* Initialize the console (after the relocation and devices init) */ - console_init_r(); -/** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **/ - - /* Initialize from environment */ - load_addr = getenv_ulong("loadaddr", 16, load_addr); - -#ifdef CONFIG_CMD_SPI - puts("SPI: "); - spi_init(); /* go init the SPI */ - puts("ready\n"); -#endif - -#if defined(CONFIG_MISC_INIT_R) - /* miscellaneous platform dependent initialisations */ - misc_init_r(); -#endif - -#ifdef CONFIG_BITBANGMII - bb_miiphy_init(); -#endif -#if defined(CONFIG_CMD_NET) - puts("Net: "); - eth_initialize(gd->bd); -#endif - - /* main_loop() can return to retry autoboot, if so just run it again. */ - for (;;) - main_loop(); - - /* NOTREACHED - no way out of command loop except booting */ -} diff --git a/qemu/roms/u-boot/arch/mips/lib/bootm.c b/qemu/roms/u-boot/arch/mips/lib/bootm.c deleted file mode 100644 index 71bb0d2a1..000000000 --- a/qemu/roms/u-boot/arch/mips/lib/bootm.c +++ /dev/null @@ -1,252 +0,0 @@ -/* - * (C) Copyright 2003 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * SPDX-License-Identifier: GPL-2.0+ - */ - -#include <common.h> -#include <command.h> -#include <image.h> -#include <u-boot/zlib.h> -#include <asm/byteorder.h> -#include <asm/addrspace.h> - -DECLARE_GLOBAL_DATA_PTR; - -#define LINUX_MAX_ENVS 256 -#define LINUX_MAX_ARGS 256 - -#if defined(CONFIG_MALTA) -#define mips_boot_malta 1 -#else -#define mips_boot_malta 0 -#endif - -static int linux_argc; -static char **linux_argv; -static char *linux_argp; - -static char **linux_env; -static char *linux_env_p; -static int linux_env_idx; - -static ulong arch_get_sp(void) -{ - ulong ret; - - __asm__ __volatile__("move %0, $sp" : "=r"(ret) : ); - - return ret; -} - -void arch_lmb_reserve(struct lmb *lmb) -{ - ulong sp; - - sp = arch_get_sp(); - debug("## Current stack ends at 0x%08lx\n", sp); - - /* adjust sp by 4K to be safe */ - sp -= 4096; - lmb_reserve(lmb, sp, CONFIG_SYS_SDRAM_BASE + gd->ram_size - sp); -} - -static void linux_cmdline_init(void) -{ - linux_argc = 1; - linux_argv = (char **)UNCACHED_SDRAM(gd->bd->bi_boot_params); - linux_argv[0] = 0; - linux_argp = (char *)(linux_argv + LINUX_MAX_ARGS); -} - -static void linux_cmdline_set(const char *value, size_t len) -{ - linux_argv[linux_argc] = linux_argp; - memcpy(linux_argp, value, len); - linux_argp[len] = 0; - - linux_argp += len + 1; - linux_argc++; -} - -static void linux_cmdline_dump(void) -{ - int i; - - debug("## cmdline argv at 0x%p, argp at 0x%p\n", - linux_argv, linux_argp); - - for (i = 1; i < linux_argc; i++) - debug(" arg %03d: %s\n", i, linux_argv[i]); -} - -static void boot_cmdline_linux(bootm_headers_t *images) -{ - const char *bootargs, *next, *quote; - - linux_cmdline_init(); - - bootargs = getenv("bootargs"); - if (!bootargs) - return; - - next = bootargs; - - while (bootargs && *bootargs && linux_argc < LINUX_MAX_ARGS) { - quote = strchr(bootargs, '"'); - next = strchr(bootargs, ' '); - - while (next && quote && quote < next) { - /* - * we found a left quote before the next blank - * now we have to find the matching right quote - */ - next = strchr(quote + 1, '"'); - if (next) { - quote = strchr(next + 1, '"'); - next = strchr(next + 1, ' '); - } - } - - if (!next) - next = bootargs + strlen(bootargs); - - linux_cmdline_set(bootargs, next - bootargs); - - if (*next) - next++; - - bootargs = next; - } - - linux_cmdline_dump(); -} - -static void linux_env_init(void) -{ - linux_env = (char **)(((ulong) linux_argp + 15) & ~15); - linux_env[0] = 0; - linux_env_p = (char *)(linux_env + LINUX_MAX_ENVS); - linux_env_idx = 0; -} - -static void linux_env_set(const char *env_name, const char *env_val) -{ - if (linux_env_idx < LINUX_MAX_ENVS - 1) { - linux_env[linux_env_idx] = linux_env_p; - - strcpy(linux_env_p, env_name); - linux_env_p += strlen(env_name); - - if (mips_boot_malta) { - linux_env_p++; - linux_env[++linux_env_idx] = linux_env_p; - } else { - *linux_env_p++ = '='; - } - - strcpy(linux_env_p, env_val); - linux_env_p += strlen(env_val); - - linux_env_p++; - linux_env[++linux_env_idx] = 0; - } -} - -static void boot_prep_linux(bootm_headers_t *images) -{ - char env_buf[12]; - const char *cp; - ulong rd_start, rd_size; - -#ifdef CONFIG_MEMSIZE_IN_BYTES - sprintf(env_buf, "%lu", (ulong)gd->ram_size); - debug("## Giving linux memsize in bytes, %lu\n", (ulong)gd->ram_size); -#else - sprintf(env_buf, "%lu", (ulong)(gd->ram_size >> 20)); - debug("## Giving linux memsize in MB, %lu\n", - (ulong)(gd->ram_size >> 20)); -#endif /* CONFIG_MEMSIZE_IN_BYTES */ - - rd_start = UNCACHED_SDRAM(images->initrd_start); - rd_size = images->initrd_end - images->initrd_start; - - linux_env_init(); - - linux_env_set("memsize", env_buf); - - sprintf(env_buf, "0x%08lX", rd_start); - linux_env_set("initrd_start", env_buf); - - sprintf(env_buf, "0x%lX", rd_size); - linux_env_set("initrd_size", env_buf); - - sprintf(env_buf, "0x%08X", (uint) (gd->bd->bi_flashstart)); - linux_env_set("flash_start", env_buf); - - sprintf(env_buf, "0x%X", (uint) (gd->bd->bi_flashsize)); - linux_env_set("flash_size", env_buf); - - cp = getenv("ethaddr"); - if (cp) - linux_env_set("ethaddr", cp); - - cp = getenv("eth1addr"); - if (cp) - linux_env_set("eth1addr", cp); - - if (mips_boot_malta) { - sprintf(env_buf, "%un8r", gd->baudrate); - linux_env_set("modetty0", env_buf); - } -} - -static void boot_jump_linux(bootm_headers_t *images) -{ - typedef void __noreturn (*kernel_entry_t)(int, ulong, ulong, ulong); - kernel_entry_t kernel = (kernel_entry_t) images->ep; - ulong linux_extra = 0; - - debug("## Transferring control to Linux (at address %p) ...\n", kernel); - - bootstage_mark(BOOTSTAGE_ID_RUN_OS); - - if (mips_boot_malta) - linux_extra = gd->ram_size; - - /* we assume that the kernel is in place */ - printf("\nStarting kernel ...\n\n"); - - kernel(linux_argc, (ulong)linux_argv, (ulong)linux_env, linux_extra); -} - -int do_bootm_linux(int flag, int argc, char * const argv[], - bootm_headers_t *images) -{ - /* No need for those on MIPS */ - if (flag & BOOTM_STATE_OS_BD_T) - return -1; - - if (flag & BOOTM_STATE_OS_CMDLINE) { - boot_cmdline_linux(images); - return 0; - } - - if (flag & BOOTM_STATE_OS_PREP) { - boot_prep_linux(images); - return 0; - } - - if (flag & BOOTM_STATE_OS_GO) { - boot_jump_linux(images); - return 0; - } - - boot_cmdline_linux(images); - boot_prep_linux(images); - boot_jump_linux(images); - - /* does not return */ - return 1; -} diff --git a/qemu/roms/u-boot/arch/mips/lib/io.c b/qemu/roms/u-boot/arch/mips/lib/io.c deleted file mode 100644 index b2d4a094d..000000000 --- a/qemu/roms/u-boot/arch/mips/lib/io.c +++ /dev/null @@ -1,12 +0,0 @@ -/* - * (C) Copyright 2003 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * SPDX-License-Identifier: GPL-2.0+ - */ - -/* - * mips_io_port_base is the begin of the address space to which x86 style - * I/O ports are mapped. - */ -const unsigned long mips_io_port_base = -1; diff --git a/qemu/roms/u-boot/arch/mips/lib/libgcc.h b/qemu/roms/u-boot/arch/mips/lib/libgcc.h deleted file mode 100644 index 05909d58e..000000000 --- a/qemu/roms/u-boot/arch/mips/lib/libgcc.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef __ASM_LIBGCC_H -#define __ASM_LIBGCC_H - -#include <asm/byteorder.h> - -typedef int word_type __attribute__ ((mode (__word__))); - -#ifdef __BIG_ENDIAN -struct DWstruct { - int high, low; -}; -#elif defined(__LITTLE_ENDIAN) -struct DWstruct { - int low, high; -}; -#else -#error I feel sick. -#endif - -typedef union { - struct DWstruct s; - long long ll; -} DWunion; - -#endif /* __ASM_LIBGCC_H */ diff --git a/qemu/roms/u-boot/arch/mips/lib/lshrdi3.c b/qemu/roms/u-boot/arch/mips/lib/lshrdi3.c deleted file mode 100644 index bb340accb..000000000 --- a/qemu/roms/u-boot/arch/mips/lib/lshrdi3.c +++ /dev/null @@ -1,25 +0,0 @@ -#include "libgcc.h" - -long long __lshrdi3(long long u, word_type b) -{ - DWunion uu, w; - word_type bm; - - if (b == 0) - return u; - - uu.ll = u; - bm = 32 - b; - - if (bm <= 0) { - w.s.high = 0; - w.s.low = (unsigned int) uu.s.high >> -bm; - } else { - const unsigned int carries = (unsigned int) uu.s.high << bm; - - w.s.high = (unsigned int) uu.s.high >> b; - w.s.low = ((unsigned int) uu.s.low >> b) | carries; - } - - return w.ll; -} |