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;