From 0933f8c540a785d1179c1b46f2dfee29d89c1527 Mon Sep 17 00:00:00 2001 From: Mark Cave-Ayland Date: Sat, 27 Mar 2010 12:09:16 +0000 Subject: [PATCH] Move the Fcode loader from arch/*/fcodeload.c to libopenbios/fcode_load.c. Signed-off-by: Mark Cave-Ayland git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@714 f158a5a8-5612-0410-a976-696ce0be7e32 --- arch/sparc64/boot.c | 1 + arch/sparc64/boot.h | 3 --- arch/sparc64/build.xml | 1 - include/libopenbios/fcode_load.h | 22 +++++++++++++++++++ libopenbios/build.xml | 1 + .../fcodeload.c => libopenbios/fcode_load.c | 8 +++---- 6 files changed, 27 insertions(+), 9 deletions(-) create mode 100644 include/libopenbios/fcode_load.h rename arch/sparc64/fcodeload.c => libopenbios/fcode_load.c (94%) diff --git a/arch/sparc64/boot.c b/arch/sparc64/boot.c index 34172ad..fa40e2b 100644 --- a/arch/sparc64/boot.c +++ b/arch/sparc64/boot.c @@ -10,6 +10,7 @@ #include "libopenbios/sys_info.h" #include "libopenbios/elf_load.h" #include "libopenbios/aout_load.h" +#include "libopenbios/fcode_load.h" #include "boot.h" struct sys_info sys_info; diff --git a/arch/sparc64/boot.h b/arch/sparc64/boot.h index 9f4d6bc..0495141 100644 --- a/arch/sparc64/boot.h +++ b/arch/sparc64/boot.h @@ -9,9 +9,6 @@ // linux_load.c int linux_load(struct sys_info *info, const char *file, const char *cmdline); -// fcodeload.c -int fcode_load(const char *filename); - // context.c extern struct context * volatile __context; uint64_t start_elf(uint64_t entry_point, uint64_t param); diff --git a/arch/sparc64/build.xml b/arch/sparc64/build.xml index 21edf08..3bea63c 100644 --- a/arch/sparc64/build.xml +++ b/arch/sparc64/build.xml @@ -14,7 +14,6 @@ - diff --git a/include/libopenbios/fcode_load.h b/include/libopenbios/fcode_load.h new file mode 100644 index 0000000..25ce9f6 --- /dev/null +++ b/include/libopenbios/fcode_load.h @@ -0,0 +1,22 @@ +/* + * Creation Date: <2010/03/22 18:00:00 mcayland> + * Time-stamp: <2010/03/22 18:00:00 mcayland> + * + * + * + * Fcode loader + * + * Copyright (C) 2010 Mark Cave-Ayland (mark.cave-ayland@siriusit.co.uk) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation + * + */ + +#ifndef _H_FCODELOAD +#define _H_FCODELOAD + +extern int fcode_load(const char *filename); + +#endif /* _H_FCODELOAD */ \ No newline at end of file diff --git a/libopenbios/build.xml b/libopenbios/build.xml index d2dd9ce..dfd2a32 100644 --- a/libopenbios/build.xml +++ b/libopenbios/build.xml @@ -17,6 +17,7 @@ + diff --git a/arch/sparc64/fcodeload.c b/libopenbios/fcode_load.c similarity index 94% rename from arch/sparc64/fcodeload.c rename to libopenbios/fcode_load.c index 84ae1ba..a8a5d6b 100644 --- a/arch/sparc64/fcodeload.c +++ b/libopenbios/fcode_load.c @@ -5,9 +5,9 @@ #include "config.h" #include "kernel/kernel.h" #include "libopenbios/bindings.h" +#include "libopenbios/fcode_load.h" #include "libopenbios/sys_info.h" #include "libc/diskio.h" -#include "boot.h" #define printf printk #define debug printk @@ -59,14 +59,14 @@ int fcode_load(const char *filename) seek_io(fd, offset + sizeof(fcode_header)); - if ((unsigned long)read_io(fd, (void *)start, size) != size) { + if ((size_t)read_io(fd, (void *)start, size) != size) { printf("Can't read file (size 0x%lx)\n", size); goto out; } debug("Loaded %lu bytes\n", size); debug("entry point is %#lx\n", start); - + // Initialise saved-program-state PUSH(start); feval("saved-program-state >sps.entry !"); @@ -76,8 +76,6 @@ int fcode_load(const char *filename) feval("-1 state-valid !"); - retval = 0; - out: close_io(fd); return retval;