/SPARTAN/trunk/src/Makefile.config |
---|
1,7 → 1,7 |
ARCH=ia32 |
#ARCH=mips |
#ARCH=ia64 |
#ARCH=powerpc |
#ARCH=ia64 |
#ARCH=amd64 |
# Support for symetric multiprocessors |
/SPARTAN/trunk/src/main/main.c |
---|
63,7 → 63,7 |
* These 'hardcoded' variables will be intialised by |
* the linker with appropriate sizes and addresses. |
*/ |
__u32 hardcoded_load_address = 0; |
__address hardcoded_load_address = 0; |
__u32 hardcoded_ktext_size = 0; |
__u32 hardcoded_kdata_size = 0; |
/SPARTAN/trunk/arch/ia64/src/putchar.c |
---|
28,7 → 28,18 |
#include <putchar.h> |
#include <arch/types.h> |
#include <arch/ski/ski.h> |
void putchar(char ch) |
{ |
__asm__ ( |
"mov r15=%0\n" |
"mov r32=%1\n" /* r32 is in0 */ |
"break 0x80000\n" /* modifies r8 */ |
: |
: "i" (SKI_CONSOLE_PUTC), "r" (ch) |
: "r15", "in0", "r8" |
); |
if (ch == '\n') putchar('\r'); |
} |
/SPARTAN/trunk/arch/ia64/src/start.S |
---|
32,17 → 32,17 |
.global kernel_image_start |
stack0: |
kernel_image_start: |
# initialize gp (Global Pointer) register |
mov r1=0x1000 |
mov r1=kernel_image_start; |
# initialize Ski console using SSC (Simulator System Sall) |
# set stack pointer to some sane value |
mov r12=stack0 |
# initialize Ski console using SSC (Simulator System Call) |
mov r15=SKI_CONSOLE_INIT |
break 0x80000 |
0: |
mov r15=SKI_CONSOLE_PUTC |
mov r32='.' |
break 0x80000 |
br 0b |
br 0b |
/SPARTAN/trunk/arch/ia64/_link.ld |
---|
1,9 → 1,21 |
/* |
* IA-64 linker script |
* |
* It is ELF format, but its only section looks like this: |
* kernel text |
* kernel data |
* |
*/ |
OUTPUT_FORMAT(elf64-ia64-little) |
ENTRY(kernel_image_start) |
SECTIONS { |
.image 0x0000000000001000: AT (0x0000000000001000) { |
*(.text .stub .text.* .gnu.linkonce.t.*) |
ktext_start = .; |
*(.text .text.* ) |
ktext_end = .; |
kdata_start = .; |
*(.interp) |
*(.hash) |
*(.dynsym) |
68,5 → 80,22 |
*(.dynbss) |
*(.bss .bss.* .gnu.linkonce.b.*) |
*(COMMON) |
kdata_end = .; |
} |
. = ABSOLUTE(hardcoded_ktext_size); |
.patch_1 : { |
LONG(ktext_end - ktext_start); |
} |
. = ABSOLUTE(hardcoded_kdata_size); |
.patch_2 : { |
LONG(kdata_end - kdata_start); |
} |
. = ABSOLUTE(hardcoded_load_address); |
.patch_3 : { |
QUAD(0x0000000000001000); |
} |
} |