Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 1218 → Rev 1220

/kernel/trunk/arch/ppc32/src/asm.S
30,10 → 30,39
 
.text
 
.global userspace_asm
.global iret
.global memsetb
.global memcpy
 
userspace_asm:
 
# r3 = uspace_uarg
# r4 = stack
# r5 = entry
 
mfmsr r31
rlwinm r31, r31, 0, 17, 15
mtmsr r31
# set entry point
mtsrr0 r5
# set problem state, enable interrupts
ori r31, r31, 1 << 14
ori r31, r31, 1 << 15
mtsrr1 r31
# set stack
mr sp, r4
# jump to userspace
rfi
 
iret:
lwz r3, 144(sp)
mtxer r3
/kernel/trunk/arch/ppc32/src/ppc32.c
32,6 → 32,8
#include <arch/drivers/cuda.h>
#include <arch/mm/memory_init.h>
#include <arch/interrupt.h>
#include <userspace.h>
#include <proc/uarg.h>
 
bootinfo_t bootinfo;
 
45,6 → 47,11
 
ppc32_console_init();
cuda_init();
/* Setup usermode */
init.cnt = 1;
init.tasks[0].addr = PA2KA(bootinfo.init.addr);
init.tasks[0].size = bootinfo.init.size;
}
 
void arch_post_mm_init(void)
64,3 → 71,11
{
}
 
void userspace(uspace_arg_t *kernel_uarg)
{
userspace_asm((__address) kernel_uarg->uspace_uarg, (__address) kernel_uarg->uspace_stack, (__address) kernel_uarg->uspace_entry);
/* Unreachable */
for (;;)
;
}
/kernel/trunk/arch/ppc32/src/dummy.s
44,9 → 44,6
tlb_invalidate_pages:
b tlb_invalidate_pages
 
userspace:
b userspace
 
sys_tls_set:
b sys_tls_set