Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 1218 → Rev 1220

/kernel/trunk/arch/ppc32/include/boot/boot.h
41,6 → 41,11
#include <arch/types.h>
 
typedef struct {
__address addr;
__u32 size;
} utask_t;
 
typedef struct {
__address start;
__u32 size;
} memzone_t;
60,6 → 65,7
} screen_t;
 
typedef struct {
utask_t init;
memmap_t memmap;
screen_t screen;
} bootinfo_t;
/kernel/trunk/arch/ppc32/include/asm.h
132,4 → 132,6
void cpu_halt(void);
void asm_delay_loop(__u32 t);
 
extern void userspace_asm(__address uspace_uarg, __address stack, __address entry);
 
#endif
/kernel/trunk/arch/ppc32/Makefile.inc
78,5 → 78,5
arch/$(ARCH)/src/mm/as.c \
arch/$(ARCH)/src/mm/frame.c \
arch/$(ARCH)/src/mm/memory_init.c \
arch/$(ARCH)/src/mm/page.c \
arch/$(ARCH)/src/mm/tlb.c
arch/$(ARCH)/src/mm/page.c \
arch/$(ARCH)/src/mm/tlb.c
/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