Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 167 → Rev 168

/SPARTAN/trunk/src/mm/vm.c
48,7 → 48,7
vm_t *vm_create(pte_t *ptl0)
{
vm_t *m;
 
m = (vm_t *) malloc(sizeof(vm_t));
if (m) {
spinlock_initialize(&m->lock);
58,17 → 58,19
* Each vm_t is supposed to have its own page table.
* It is either passed one or it has to allocate and set one up.
*/
if (!(m->ptl0 = ptl0)) {
m->ptl0 = ptl0;
if (!m->ptl0) {
pte_t *src_ptl0, *dst_ptl0;
src_ptl0 = (pte_t *) PA2KA(GET_PTL0_ADDRESS());
src_ptl0 = (pte_t *) PA2KA((__address) GET_PTL0_ADDRESS());
dst_ptl0 = (pte_t *) frame_alloc(FRAME_KA | FRAME_PANIC);
memsetb((__address) dst_ptl0, PAGE_SIZE, 0);
memcopy((__address) &src_ptl0[KAS_START_INDEX], (__address) &dst_ptl0[KAS_START_INDEX], KAS_INDICES*sizeof(pte_t));
m->ptl0 = (pte_t *) KA2PA(dst_ptl0);
// memsetb((__address) dst_ptl0, PAGE_SIZE, 0);
// memcopy((__address) &src_ptl0[KAS_START_INDEX], (__address) &dst_ptl0[KAS_START_INDEX], KAS_INDICES*sizeof(pte_t));
memcopy(PA2KA((__address) GET_PTL0_ADDRESS()), (__address) dst_ptl0, PAGE_SIZE);
m->ptl0 = (pte_t *) KA2PA((__address) dst_ptl0);
}
}
 
return m;
}
 
/SPARTAN/trunk/arch/ia32/src/asm.S
379,10 → 379,7
mov %ax,%fs;
mov %ax,%gs;
0:
# movl $0xdeadbeaf, %eax
int $48
cli;
sti;
int $48
jmp 0b
# not reached
utext_end:
/SPARTAN/trunk/arch/ia32/src/interrupt.c
82,7 → 82,7
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);
printf("stack: %X, %X, %X, %X\n", stack[4], stack[5], stack[6], stack[7]);
//panic("general protection fault\n");
panic("general protection fault\n");
stack[1]++;
}