Changeset e692a27 in mainline
- Timestamp:
- 2006-04-22T22:35:37Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- cf85e24c
- Parents:
- c118940
- Location:
- arch/ppc32
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ppc32/Makefile.inc
rc118940 re692a27 79 79 arch/$(ARCH)/src/mm/frame.c \ 80 80 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 133 133 void asm_delay_loop(__u32 t); 134 134 135 extern void userspace_asm(__address uspace_uarg, __address stack, __address entry); 136 135 137 #endif -
arch/ppc32/include/boot/boot.h
rc118940 re692a27 42 42 43 43 typedef struct { 44 __address addr; 45 __u32 size; 46 } utask_t; 47 48 typedef struct { 44 49 __address start; 45 50 __u32 size; … … 61 66 62 67 typedef struct { 68 utask_t init; 63 69 memmap_t memmap; 64 70 screen_t screen; -
arch/ppc32/src/asm.S
rc118940 re692a27 31 31 .text 32 32 33 .global userspace_asm 33 34 .global iret 34 35 .global memsetb 35 36 .global memcpy 37 38 userspace_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 36 65 37 66 iret: -
arch/ppc32/src/dummy.s
rc118940 re692a27 45 45 b tlb_invalidate_pages 46 46 47 userspace:48 b userspace49 50 47 sys_tls_set: 51 48 b sys_tls_set -
arch/ppc32/src/ppc32.c
rc118940 re692a27 33 33 #include <arch/mm/memory_init.h> 34 34 #include <arch/interrupt.h> 35 #include <userspace.h> 36 #include <proc/uarg.h> 35 37 36 38 bootinfo_t bootinfo; … … 46 48 ppc32_console_init(); 47 49 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; 48 55 } 49 56 … … 65 72 } 66 73 74 void 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.