//SPARTAN/trunk/arch/amd64/_link.ld.in |
---|
62,7 → 62,15 |
_hardcoded_kernel_size = (ktext_end - ktext_start) + (unmapped_ktext_end - unmapped_ktext_start) + (kdata_end - kdata_start) + (unmapped_kdata_end - unmapped_kdata_start); |
/* Symbols that need to be accessed both from real mode & long mode */ |
/* e820*_boot is real mode (pre-above-1MB-move), e820* is */ |
/* kernel mapped above-1MB-physical copied symbol */ |
e820table_boot = KA2PA(e820table) - BOOT_OFFSET; |
e820counter_boot = KA2PA(e820counter) - BOOT_OFFSET; |
/* real_bootstrap_gdtr is mapped real_bootstrap_gdtr_boot */ |
/* It is physically outside of kernel area, we have to access */ |
/* it after modification from long mode for booting */ |
/* SMP slave processors */ |
real_bootstrap_gdtr = PA2KA(real_bootstrap_gdtr_boot); |
} |
//SPARTAN/trunk/arch/amd64/include/byteorder.h |
---|
30,6 → 30,7 |
#define __amd64_BYTEORDER_H__ |
/* AMD64 is little-endian */ |
#define native_le2host(n) n |
#define native_le2host(n) (n) |
#define u64_le2host(n) (n) |
#endif |
//SPARTAN/trunk/arch/amd64/src/fpu_context.c |
---|
31,6 → 31,7 |
#include <arch.h> |
#include <cpu.h> |
/** Save FPU (mmx, sse) context using fxsave instruction */ |
void fpu_context_save(fpu_context_t *fctx) |
{ |
/* Align on 16-byte boundary */ |
43,6 → 44,7 |
); |
} |
/** Restore FPU (mmx,sse) context using fxrstor instruction */ |
void fpu_context_restore(fpu_context_t *fctx) |
{ |
/* Align on 16-byte boundary */ |
//SPARTAN/trunk/arch/amd64/src/asm_utils.S |
---|
58,11 → 58,6 |
# THIS IS USERSPACE CODE |
.global utext |
utext: |
xor %ax,%ax; |
mov %ax,%ds; |
mov %ax,%es; |
mov %ax,%fs; |
mov %ax,%gs; |
0: |
int $48 |
jmp 0b |
177,11 → 172,10 |
push_all_gpr |
# trap_dispatcher(i, stack) |
movq $(\i),%rdi # %rdi - first parameter |
movq %rbp, %rsi |
addq $8, %rsi # %rsi - second parameter - original stack |
call trap_dispatcher |
call trap_dispatcher # trap_dispatcher(i, stack) |
# Test if this is interrupt with error word or not |
mov $\i,%cl; |
216,9 → 210,6 |
interrupt_handlers: |
h_start: |
handler 0 IDT_ITEMS |
# handler 64 128 |
# handler 128 192 |
# handler 192 256 |
h_end: |
//SPARTAN/trunk/arch/amd64/src/pm.c |
---|
91,7 → 91,7 |
.special = 1, |
.granularity = 1, |
.base_24_31 = 0 }, |
/* KTEXT 32-bit protected */ |
/* KTEXT 32-bit protected, for protected mode before long mode */ |
{ .limit_0_15 = 0xffff, |
.base_0_15 = 0, |
.base_16_23 = 0, |