/SPARTAN/trunk/arch/mips32/include/arg.h |
---|
29,6 → 29,8 |
#ifndef __mips32_ARG_H__ |
#define __mips32_ARG_H__ |
//#include <stackarg.h> |
#include <arch/types.h> |
typedef struct va_list { |
37,13 → 39,13 |
} va_list; |
#define va_start(ap, lst) \ |
(ap).pos = sizeof(lst); \ |
(ap).pos = sizeof(lst); \ |
(ap).last = (__u8 *) &(lst) |
/** |
* va_arg macro for MIPS32 - problem is that 64 bit values must be aligned on an 8-byte boundary (32bit values not) |
* To satisfy this, paddings must be sometimes inserted. |
*/ |
* va_arg macro for MIPS32 - problem is that 64 bit values must be aligned on an 8-byte boundary (32bit values not) |
* To satisfy this, paddings must be sometimes inserted. |
*/ |
#define va_arg(ap, type) \ |
(*((type *)((ap).last + ((ap).pos += sizeof(type) + ((sizeof(type)==8)&&(((ap).pos)&(4))?4:0)) - sizeof(type)))) |
/SPARTAN/trunk/arch/sparc64/Makefile.inc |
---|
14,17 → 14,11 |
ASFLAGS= |
DEFS=-DARCH=$(ARCH) |
CFLAGS=$(DEFS) -nostdlib -fno-builtin -mcpu=ultrasparc -m64 -O2 |
CFLAGS=$(DEFS) -nostdlib -fno-builtin -O2 |
LFLAGS=-M -no-check-sections -N |
arch_sources= \ |
src/arch/asm.S \ |
src/arch/console.c \ |
src/arch/context.S \ |
src/arch/dummy.s \ |
src/arch/sparc64.c \ |
src/arch/start.S \ |
src/arch/mm/frame.c \ |
src/arch/mm/page.c |
src/arch/sparc64.c |
/SPARTAN/trunk/arch/sparc64/src/asm.S |
---|
File deleted |
/SPARTAN/trunk/arch/sparc64/src/mm/frame.c |
---|
File deleted |
/SPARTAN/trunk/arch/sparc64/src/mm/page.c |
---|
File deleted |
/SPARTAN/trunk/arch/sparc64/src/context.S |
---|
File deleted |
/SPARTAN/trunk/arch/sparc64/src/console.c |
---|
File deleted |
/SPARTAN/trunk/arch/sparc64/src/dummy.s |
---|
30,6 → 30,8 |
.global asm_delay_loop |
.global before_thread_runs_arch |
.global context_restore_arch |
.global context_save_arch |
.global cpu_arch_init |
.global cpu_halt |
.global cpu_identify |
44,6 → 46,10 |
.global fpu_context_save |
.global fpu_enable |
.global fpu_init |
.global frame_arch_init |
.global memcpy |
.global memsetb |
.global page_arch_init |
.global panic_printf |
.global userspace |
51,6 → 57,8 |
asm_delay_loop: |
before_thread_runs_arch: |
context_restore_arch: |
context_save_arch: |
cpu_arch_init: |
cpu_halt: |
cpu_identify: |
65,6 → 73,10 |
fpu_context_save: |
fpu_enable: |
fpu_init: |
frame_arch_init: |
memcpy: |
memsetb: |
page_arch_init: |
panic_printf: |
userspace: |
/SPARTAN/trunk/arch/sparc64/src/start.S |
---|
26,11 → 26,6 |
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
# |
.register %g2, #scratch |
.register %g3, #scratch |
.register %g6, #scratch |
.register %g7, #scratch |
.section K_TEXT_START, "ax" |
.global kernel_image_start |
56,11 → 51,7 |
call ofw_init |
nop |
call main_bsp |
nop |
/* Not reached. */ |
2: |
b 2b |
nop |
/SPARTAN/trunk/arch/sparc64/_link.ld |
---|
30,7 → 30,7 |
hardcoded_kdata_size = .; |
LONG(kdata_end - kdata_start); |
hardcoded_load_address = .; |
QUAD(0x4000); |
LONG(0x4000); |
*(.bss); /* uninitialized static variables */ |
*(COMMON); /* global variables */ |
/SPARTAN/trunk/arch/sparc64/include/context.h |
---|
29,15 → 29,10 |
#ifndef __sparc64_CONTEXT_H__ |
#define __sparc64_CONTEXT_H__ |
#ifndef __sparc64_TYPES_H__ |
# include <arch/types.h> |
#endif |
#include <arch/types.h> |
#include <typedefs.h> |
#include <align.h> |
#ifndef __ALIGN_H__ |
# include <align.h> |
#endif |
#define STACK_ALIGNMENT 8 |
#define STACK_ITEM_SIZE 8 |
/* |
45,35 → 40,16 |
*/ |
#define SP_DELTA (0+STACK_ITEM_SIZE) |
#ifdef context_set |
#undef context_set |
#endif |
#define context_set(c, _pc, stack, size) \ |
(c)->pc = ((__address) _pc) - 8; \ |
(c)->sp = ((__address) stack) + (ALIGN((size), STACK_ALIGNMENT) + 1) - SP_DELTA; |
/* |
* Only save registers that must be preserved across |
* function calls. |
*/ |
struct context { |
__u64 l0; |
__u64 l1; |
__u64 l2; |
__u64 l3; |
__u64 l4; |
__u64 l5; |
__u64 l6; |
__u64 l7; |
__u64 i1; |
__u64 i2; |
__u64 i3; |
__u64 i4; |
__u64 i5; |
__address sp; /* %i6 */ |
__address pc; /* %i7 */ |
__address bsp; |
__address sp; |
__address pc; |
ipl_t ipl; |
}; |
} __attribute__ ((packed)); |
#endif |
/SPARTAN/trunk/arch/sparc64/include/types.h |
---|
35,8 → 35,8 |
typedef unsigned char __u8; |
typedef unsigned short __u16; |
typedef unsigned int __u32; |
typedef unsigned long __u64; |
typedef unsigned long __u32; |
typedef long long __u64; |
typedef __u64 __address; |
/SPARTAN/trunk/arch/sparc64/include/arg.h |
---|
29,6 → 29,6 |
#ifndef __sparc64_ARG_H__ |
#define __sparc64_ARG_H__ |
#include <stdarg.h> |
#include <stackarg.h> |
#endif |
/SPARTAN/trunk/arch/sparc64/include/asm.h |
---|
78,11 → 78,6 |
*/ |
static inline __address get_stack_base(void) |
{ |
__address v; |
__asm__ volatile ("and %%o6, %1, %0\n" : "=r" (v) : "r" (~(STACK_SIZE-1))); |
return v; |
} |
void cpu_halt(void); |
/SPARTAN/trunk/arch/ppc32/Makefile.inc |
---|
18,7 → 18,6 |
LFLAGS=-M -no-check-sections -N |
arch_sources= \ |
src/arch/console.c \ |
src/arch/context.S \ |
src/arch/debug/panic.s \ |
src/arch/fpu_context.c \ |
/SPARTAN/trunk/arch/ppc32/src/console.c |
---|
File deleted |
/SPARTAN/trunk/genarch/include/firmware/ofw/ofw.h |
---|
26,8 → 26,8 |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
#ifndef __OFW_H__ |
#define __OFW_H__ |
#ifndef __ppc32_OFW_H__ |
#define __ppc32_OFW_H__ |
#include <arch/types.h> |
58,5 → 58,6 |
extern phandle ofw_find_device(const char *name); |
extern int ofw_get_property(const phandle device, const char *name, void *buf, const int buflen); |
extern void *ofw_claim(const void *addr, const int size, const int align); |
extern void putchar(const char ch); |
#endif |
/SPARTAN/trunk/genarch/src/firmware/ofw/ofw.c |
---|
98,3 → 98,8 |
{ |
return (void *) ofw_call("claim", 3, 1, addr, size, align); |
} |
void putchar(const char ch) |
{ |
ofw_putchar(ch); |
} |
/SPARTAN/trunk/build.sparc64 |
---|
1,6 → 1,3 |
#! /bin/sh |
# Generate context_offset.h |
(cd tools/sparc64/;make gencontext;./gencontext) |
make all ARCH=sparc64 |
/SPARTAN/trunk/clean.sparc64 |
---|
1,6 → 1,3 |
#! /bin/sh |
make dist-clean ARCH=sparc64 |
rm tools/sparc64/gencontext |
rm arch/sparc64/include/context_offset.h |
/SPARTAN/trunk/tools/sparc64/gencontext.c |
---|
File deleted |