Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 215 → Rev 216

/SPARTAN/trunk/arch/ia32/src/boot/boot.S
66,10 → 66,6
 
call map_kernel # map kernel and turn paging on
 
movl $_hardcoded_ktext_size, hardcoded_ktext_size
movl $_hardcoded_kdata_size, hardcoded_kdata_size
movl $_hardcoded_load_address, hardcoded_load_address
 
call main_bsp # never returns
 
cli
/SPARTAN/trunk/arch/ia32/src/interrupt.c
63,7 → 63,7
* Called directly from the assembler code.
* CPU is cpu_priority_high().
*/
void trap_dispatcher(__u8 n, __u32 stack[])
void trap_dispatcher(__u8 n, __native stack[])
{
ASSERT(n < IVT_ITEMS);
70,7 → 70,7
ivt[n](n, stack);
}
 
void null_interrupt(__u8 n, __u32 stack[])
void null_interrupt(__u8 n, __native stack[])
{
printf("int %d: null_interrupt\n", n);
printf("stack: %L, %L, %L, %L\n", stack[0], stack[1], stack[2], stack[3]);
77,7 → 77,7
panic("unserviced interrupt\n");
}
 
void gp_fault(__u8 n, __u32 stack[])
void gp_fault(__u8 n, __native stack[])
{
printf("ERROR_WORD=%X, %%eip=%X, %%cs=%X, flags=%X\n", stack[0], stack[1], stack[2], stack[3]);
printf("%%eax=%L, %%ebx=%L, %%ecx=%L, %%edx=%L,\n%%edi=%L, %%esi=%L, %%ebp=%L, %%esp=%L\n", stack[-2], stack[-5], stack[-3], stack[-4], stack[-9], stack[-8], stack[-1], stack);
86,7 → 86,7
stack[1]++;
}
 
void ss_fault(__u8 n, __u32 stack[])
void ss_fault(__u8 n, __native stack[])
{
printf("ERROR_WORD=%X, %%eip=%X, %%cs=%X, flags=%X\n", stack[0], stack[1], stack[2], stack[3]);
printf("%%eax=%L, %%ebx=%L, %%ecx=%L, %%edx=%L,\n%%edi=%L, %%esi=%L, %%ebp=%L, %%esp=%L\n", stack[-2], stack[-5], stack[-3], stack[-4], stack[-9], stack[-8], stack[-1], stack);
95,7 → 95,7
}
 
 
void nm_fault(__u8 n, __u32 stack[])
void nm_fault(__u8 n, __native stack[])
{
reset_TS_flag();
if ((CPU->fpu_owner)!=NULL) {
109,7 → 109,7
 
 
 
void page_fault(__u8 n, __u32 stack[])
void page_fault(__u8 n, __native stack[])
{
printf("page fault address: %X\n", read_cr2());
printf("ERROR_WORD=%X, %%eip=%X, %%cs=%X, flags=%X\n", stack[0], stack[1], stack[2], stack[3]);
118,19 → 118,19
panic("page fault\n");
}
 
void syscall(__u8 n, __u32 stack[])
void syscall(__u8 n, __native stack[])
{
printf("cpu%d: syscall\n", CPU->id);
thread_usleep(1000);
}
 
void tlb_shootdown_ipi(__u8 n, __u32 stack[])
void tlb_shootdown_ipi(__u8 n, __native stack[])
{
trap_virtual_eoi();
tlb_shootdown_ipi_recv();
}
 
void wakeup_ipi(__u8 n, __u32 stack[])
void wakeup_ipi(__u8 n, __native stack[])
{
trap_virtual_eoi();
}
/SPARTAN/trunk/arch/ia32/_link.ld
31,13 → 31,14
*(.data); /* initialized data */
*(.rodata*); /* string literals */
*(COMMON); /* global variables */
hardcoded_load_address = .;
LONG(0xffffffff80008000);
hardcoded_ktext_size = .;
LONG(ktext_end - ktext_start + (unmapped_ktext_end - unmapped_ktext_start));
hardcoded_kdata_size = .;
LONG(kdata_end - kdata_start + (unmapped_kdata_end - unmapped_kdata_start));
*(.bss); /* uninitialized static variables */
*(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 = 0x80008000;
 
}