Changeset e692a27 in mainline


Ignore:
Timestamp:
2006-04-22T22:35:37Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
cf85e24c
Parents:
c118940
Message:

ppc32: initial userspace support

Location:
arch/ppc32
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • arch/ppc32/Makefile.inc

    rc118940 re692a27  
    7979        arch/$(ARCH)/src/mm/frame.c \
    8080        arch/$(ARCH)/src/mm/memory_init.c \
    81         arch/$(ARCH)/src/mm/page.c  \
    82         arch/$(ARCH)/src/mm/tlb.c 
     81        arch/$(ARCH)/src/mm/page.c \
     82        arch/$(ARCH)/src/mm/tlb.c
  • arch/ppc32/include/asm.h

    rc118940 re692a27  
    133133void asm_delay_loop(__u32 t);
    134134
     135extern void userspace_asm(__address uspace_uarg, __address stack, __address entry);
     136
    135137#endif
  • arch/ppc32/include/boot/boot.h

    rc118940 re692a27  
    4242
    4343typedef struct {
     44        __address addr;
     45        __u32 size;
     46} utask_t;
     47
     48typedef struct {
    4449        __address start;
    4550        __u32 size;
     
    6166
    6267typedef struct {
     68        utask_t init;
    6369        memmap_t memmap;
    6470        screen_t screen;
  • arch/ppc32/src/asm.S

    rc118940 re692a27  
    3131.text
    3232
     33.global userspace_asm
    3334.global iret
    3435.global memsetb
    3536.global memcpy
     37
     38userspace_asm:
     39
     40        # r3 = uspace_uarg
     41        # r4 = stack
     42        # r5 = entry   
     43
     44        mfmsr r31
     45        rlwinm r31, r31, 0, 17, 15
     46        mtmsr r31
     47       
     48        # set entry point
     49       
     50        mtsrr0 r5
     51       
     52        # set problem state, enable interrupts
     53       
     54        ori r31, r31, 1 << 14
     55        ori r31, r31, 1 << 15
     56        mtsrr1 r31
     57       
     58        # set stack
     59       
     60        mr sp, r4
     61       
     62        # jump to userspace
     63       
     64        rfi
    3665
    3766iret:
  • arch/ppc32/src/dummy.s

    rc118940 re692a27  
    4545        b tlb_invalidate_pages
    4646
    47 userspace:
    48         b userspace
    49 
    5047sys_tls_set:
    5148        b sys_tls_set
  • arch/ppc32/src/ppc32.c

    rc118940 re692a27  
    3333#include <arch/mm/memory_init.h>
    3434#include <arch/interrupt.h>
     35#include <userspace.h>
     36#include <proc/uarg.h>
    3537
    3638bootinfo_t bootinfo;
     
    4648        ppc32_console_init();
    4749        cuda_init();
     50       
     51        /* Setup usermode */
     52        init.cnt = 1;
     53        init.tasks[0].addr = PA2KA(bootinfo.init.addr);
     54        init.tasks[0].size = bootinfo.init.size;
    4855}
    4956
     
    6572}
    6673
     74void userspace(uspace_arg_t *kernel_uarg)
     75{
     76        userspace_asm((__address) kernel_uarg->uspace_uarg, (__address) kernel_uarg->uspace_stack, (__address) kernel_uarg->uspace_entry);
     77       
     78        /* Unreachable */
     79        for (;;)
     80                ;
     81}
Note: See TracChangeset for help on using the changeset viewer.