/SPARTAN/trunk/genarch/include/firmware/ofw/ofw.h |
---|
33,9 → 33,9 |
#define MAX_OFW_ARGS 10 |
typedef __u32 ofw_arg_t; |
typedef __u32 ihandle; |
typedef __u32 phandle; |
typedef __native ofw_arg_t; |
typedef int ihandle; |
typedef int phandle; |
/** OpenFirmware command structure |
* |
42,8 → 42,8 |
*/ |
typedef struct { |
const char *service; /**< Command name */ |
__u32 nargs; /**< Number of in arguments */ |
__u32 nret; /**< Number of out arguments */ |
__native nargs; /**< Number of in arguments */ |
__native 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 __address ofw_call(const char *service, const int nargs, const int nret, ...); |
extern __native 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) |
{ |
ofw_call("exit", 0, 0); |
(void) ofw_call("exit", 0, 0); |
cpu_halt(); |
} |
__address ofw_call(const char *service, const int nargs, const int nret, ...) |
__native 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; |
ofw_call("write", 3, 1, ofw_stdout, &ch, 1); |
(void) ofw_call("write", 3, 1, ofw_stdout, &ch, 1); |
} |
phandle ofw_find_device(const char *name) |
{ |
return ofw_call("finddevice", 1, 1, name); |
return (phandle) ofw_call("finddevice", 1, 1, name); |
} |
int ofw_get_property(const phandle device, const char *name, void *buf, const int buflen) |
{ |
return ofw_call("getprop", 4, 1, device, name, buf, buflen); |
return (int) ofw_call("getprop", 4, 1, device, name, buf, buflen); |
} |
void *ofw_claim(const void *addr, const int size, const int align) |
/SPARTAN/trunk/arch/sparc64/Makefile.inc |
---|
19,4 → 19,6 |
arch_sources= \ |
src/arch/dummy.s \ |
src/arch/start.S |
src/arch/start.S \ |
src/arch/sparc64.c |
/SPARTAN/trunk/arch/sparc64/src/sparc64.c |
---|
0,0 → 1,45 |
/* |
* Copyright (C) 2005 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
#include <arch.h> |
void arch_pre_mm_init(void) |
{ |
} |
void arch_post_mm_init(void) |
{ |
} |
void arch_late_init(void) |
{ |
} |
void calibrate_delay_loop(void) |
{ |
} |
/SPARTAN/trunk/arch/sparc64/src/dummy.s |
---|
28,12 → 28,8 |
.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 |
59,12 → 55,8 |
.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,5 → 31,27 |
.global kernel_image_start |
kernel_image_start: |
0: |
b 0b |
b 1f |
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 0x80000000: AT (0x80000000) { |
.image 0x4000: AT (0x4000) { |
ktext_start = .; |
*(K_TEXT_START) |
*(.text); |
30,7 → 30,7 |
hardcoded_kdata_size = .; |
LONG(kdata_end - kdata_start); |
hardcoded_load_address = .; |
LONG(0x80000000); |
LONG(0x4000); |
*(.bss); /* uninitialized static variables */ |
*(COMMON); /* global variables */ |