/SPARTAN/trunk/arch/sparc64/src/sparc64.c |
---|
File deleted |
/SPARTAN/trunk/arch/sparc64/src/dummy.s |
---|
28,8 → 28,12 |
.text |
.global arch_late_init |
.global arch_post_mm_init |
.global arch_pre_mm_init |
.global asm_delay_loop |
.global before_thread_runs_arch |
.global calibrate_delay_loop |
.global context_restore_arch |
.global context_save_arch |
.global cpu_arch_init |
55,8 → 59,12 |
.global dummy |
arch_late_init: |
arch_post_mm_init: |
arch_pre_mm_init: |
asm_delay_loop: |
before_thread_runs_arch: |
calibrate_delay_loop: |
context_restore_arch: |
context_save_arch: |
cpu_arch_init: |
/SPARTAN/trunk/arch/sparc64/src/start.S |
---|
31,27 → 31,5 |
.global kernel_image_start |
kernel_image_start: |
0: |
b 1f |
b 0b |
nop |
# |
# This header forces SILO to load the kernel at 0x4000. |
# More precisely, SILO will think this is an old version of Linux. |
# |
.ascii "HdrS" |
.word 0 |
.half 0 |
.align 8 |
1: |
set ofw, %l0 |
stx %o4, [%l0] |
call ofw_init |
nop |
2: |
b 2b |
nop |
/SPARTAN/trunk/arch/sparc64/_link.ld |
---|
11,7 → 11,7 |
ENTRY(kernel_image_start) |
SECTIONS { |
.image 0x4000: AT (0x4000) { |
.image 0x80000000: AT (0x80000000) { |
ktext_start = .; |
*(K_TEXT_START) |
*(.text); |
30,7 → 30,7 |
hardcoded_kdata_size = .; |
LONG(kdata_end - kdata_start); |
hardcoded_load_address = .; |
LONG(0x4000); |
LONG(0x80000000); |
*(.bss); /* uninitialized static variables */ |
*(COMMON); /* global variables */ |
/SPARTAN/trunk/arch/sparc64/Makefile.inc |
---|
19,6 → 19,4 |
arch_sources= \ |
src/arch/dummy.s \ |
src/arch/start.S \ |
src/arch/sparc64.c |
src/arch/start.S |
/SPARTAN/trunk/genarch/include/firmware/ofw/ofw.h |
---|
33,9 → 33,9 |
#define MAX_OFW_ARGS 10 |
typedef __native ofw_arg_t; |
typedef int ihandle; |
typedef int phandle; |
typedef __u32 ofw_arg_t; |
typedef __u32 ihandle; |
typedef __u32 phandle; |
/** OpenFirmware command structure |
* |
42,8 → 42,8 |
*/ |
typedef struct { |
const char *service; /**< Command name */ |
__native nargs; /**< Number of in arguments */ |
__native nret; /**< Number of out arguments */ |
__u32 nargs; /**< Number of in arguments */ |
__u32 nret; /**< Number of out arguments */ |
ofw_arg_t args[MAX_OFW_ARGS]; /**< List of arguments */ |
} ofw_args_t; |
53,7 → 53,7 |
extern void ofw_init(void); |
extern void ofw_done(void); |
extern __native ofw_call(const char *service, const int nargs, const int nret, ...); |
extern __address ofw_call(const char *service, const int nargs, const int nret, ...); |
extern void ofw_putchar(const char ch); |
extern phandle ofw_find_device(const char *name); |
extern int ofw_get_property(const phandle device, const char *name, void *buf, const int buflen); |
/SPARTAN/trunk/genarch/src/firmware/ofw/ofw.c |
---|
49,11 → 49,11 |
void ofw_done(void) |
{ |
(void) ofw_call("exit", 0, 0); |
ofw_call("exit", 0, 0); |
cpu_halt(); |
} |
__native ofw_call(const char *service, const int nargs, const int nret, ...) |
__address ofw_call(const char *service, const int nargs, const int nret, ...) |
{ |
va_list list; |
ofw_args_t args; |
81,17 → 81,17 |
if (ofw_stdout == 0) |
return; |
(void) ofw_call("write", 3, 1, ofw_stdout, &ch, 1); |
ofw_call("write", 3, 1, ofw_stdout, &ch, 1); |
} |
phandle ofw_find_device(const char *name) |
{ |
return (phandle) ofw_call("finddevice", 1, 1, name); |
return ofw_call("finddevice", 1, 1, name); |
} |
int ofw_get_property(const phandle device, const char *name, void *buf, const int buflen) |
{ |
return (int) ofw_call("getprop", 4, 1, device, name, buf, buflen); |
return ofw_call("getprop", 4, 1, device, name, buf, buflen); |
} |
void *ofw_claim(const void *addr, const int size, const int align) |