/SPARTAN/trunk/arch/amd64/include/asm.h |
---|
131,6 → 131,15 |
return v; |
} |
/** Read CR2 |
* |
* Return value in CR2 |
* |
* @return Value read. |
*/ |
static inline __u32 read_cr2(void) { __u64 v; __asm__ volatile ("movq %%cr2,%0" : "=r" (v)); return v; } |
extern size_t interrupt_handler_size; |
extern void interrupt_handlers(void); |
/SPARTAN/trunk/arch/amd64/Makefile.inc |
---|
26,5 → 26,5 |
arch/supplib.c \ |
arch/delay.S \ |
arch/amd64.c \ |
arch/bios/bios.c |
arch/bios/bios.c \ |
arch/interrupt.c |
/SPARTAN/trunk/arch/amd64/src/dummy.s |
---|
42,39 → 42,16 |
.global page_arch_init |
.global frame_arch_init |
.global dummy |
.global trap_register |
.global trap_virtual_eoi |
.global trap_virtual_enable_irqs |
.global rdtsc |
.global trap_virtual_disable_irqs |
.global enable_irqs_function |
.global disable_irqs_function |
.global eoi_function |
.global syscall |
.global reset_TS_flag |
.global fpu_init |
.global null_interrupt |
.global interrupt_handler_size |
.global gp_fault |
.global nm_fault |
.global ss_fault |
.global interrupt_handlers |
.global memcpy |
null_interrupt: |
interrupt_handler_size: |
interrupt_handlers: |
gp_fault: |
nm_fault: |
ss_fault: |
eoi_function: |
syscall: |
enable_irqs_function: |
disable_irqs_function: |
rdtsc: |
trap_virtual_eoi: |
trap_virtual_enable_irqs: |
trap_virtual_disable_irqs: |
trap_register: |
before_thread_runs_arch: |
userspace: |
calibrate_delay_loop: |
89,8 → 66,13 |
cpu_halt: |
page_arch_init: |
frame_arch_init: |
memcpy: |
reset_TS_flag: |
fpu_init: |
dummy: |
0: |
ret |
.global memcpy |
memcpy: |
jmp _memcpy |
/SPARTAN/trunk/arch/amd64/_link.ld |
---|
31,13 → 31,15 |
*(.data); /* initialized data */ |
*(.rodata*); /* string literals */ |
*(COMMON); /* global variables */ |
hardcoded_load_address = .; |
QUAD(0xffffffff80008000); |
hardcoded_ktext_size = .; |
QUAD(ktext_end - ktext_start + (unmapped_ktext_end - unmapped_ktext_start)); |
hardcoded_kdata_size = .; |
QUAD(kdata_end - kdata_start + (unmapped_kdata_end - unmapped_kdata_start)); |
*(.eh_frame); |
*(.bss); /* uninitialized static variables */ |
*(.eh_frame); |
*(K_DATA_END); |
kdata_end = .; |
} |
_hardcoded_ktext_size = ktext_end - ktext_start + (unmapped_ktext_end - unmapped_ktext_start); |
_hardcoded_kdata_size = kdata_end - kdata_start + (unmapped_kdata_end - unmapped_kdata_start); |
_hardcoded_load_address = 0xffffffff80008000; |
} |