Changeset e39d7b8 in mainline for kernel/arch
- Timestamp:
- 2019-06-17T15:12:44Z (6 years ago)
- Children:
- 64b7854
- Parents:
- ef705e14
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2019-06-16 17:59:34)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2019-06-17 15:12:44)
- Location:
- kernel/arch
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/abs32le/src/abs32le.c
ref705e14 re39d7b8 126 126 } 127 127 128 uintptr_t memcpy_from_uspace(void *dst, const void *uspace_src, size_t size)128 uintptr_t memcpy_from_uspace(void *dst, uspace_addr_t uspace_src, size_t size) 129 129 { 130 130 return 0; 131 131 } 132 132 133 uintptr_t memcpy_to_uspace( void *uspace_dst, const void *src, size_t size)133 uintptr_t memcpy_to_uspace(uspace_addr_t uspace_dst, const void *src, size_t size) 134 134 { 135 135 return 0; -
kernel/arch/amd64/src/debug/stacktrace.c
ref705e14 re39d7b8 69 69 bool uspace_frame_pointer_prev(stack_trace_context_t *ctx, uintptr_t *prev) 70 70 { 71 return !copy_from_uspace( (void *)prev,72 (uint64_t *) ctx->fp +FRAME_OFFSET_FP_PREV, sizeof(*prev));71 return !copy_from_uspace(prev, 72 ctx->fp + sizeof(uintptr_t) * FRAME_OFFSET_FP_PREV, sizeof(*prev)); 73 73 } 74 74 75 75 bool uspace_return_address_get(stack_trace_context_t *ctx, uintptr_t *ra) 76 76 { 77 return !copy_from_uspace( (void *)ra,78 (uint64_t *) ctx->fp +FRAME_OFFSET_RA, sizeof(*ra));77 return !copy_from_uspace(ra, 78 ctx->fp + sizeof(uintptr_t) * FRAME_OFFSET_RA, sizeof(*ra)); 79 79 } 80 80 -
kernel/arch/amd64/src/userspace.c
ref705e14 re39d7b8 66 66 "iretq\n" 67 67 :: [udata_des] "i" (GDT_SELECTOR(UDATA_DES) | PL_USER), 68 [stack_top] "r" ( (uint8_t *)kernel_uarg->uspace_stack +68 [stack_top] "r" (kernel_uarg->uspace_stack + 69 69 kernel_uarg->uspace_stack_size), 70 70 [rflags] "r" (rflags), -
kernel/arch/arm32/src/debug/stacktrace.c
ref705e14 re39d7b8 68 68 bool uspace_frame_pointer_prev(stack_trace_context_t *ctx, uintptr_t *prev) 69 69 { 70 return !copy_from_uspace( (void *)prev,71 (uint32_t *) ctx->fp +FRAME_OFFSET_FP_PREV, sizeof(*prev));70 return !copy_from_uspace(prev, 71 ctx->fp + sizeof(uintptr_t) * FRAME_OFFSET_FP_PREV, sizeof(*prev)); 72 72 } 73 73 74 74 bool uspace_return_address_get(stack_trace_context_t *ctx, uintptr_t *ra) 75 75 { 76 return !copy_from_uspace( (void *)ra,77 (uint32_t *) ctx->fp +FRAME_OFFSET_RA, sizeof(*ra));76 return !copy_from_uspace(ra, 77 ctx->fp + sizeof(uintptr_t) * FRAME_OFFSET_RA, sizeof(*ra)); 78 78 } 79 79 -
kernel/arch/arm32/src/userspace.c
ref705e14 re39d7b8 71 71 72 72 /* set first parameter */ 73 ustate.r0 = (uintptr_t)kernel_uarg->uspace_uarg;73 ustate.r0 = kernel_uarg->uspace_uarg; 74 74 75 75 /* %r1 is defined to hold pcb_ptr - set it to 0 */ … … 93 93 94 94 /* set user stack */ 95 ustate.sp = ((uint32_t) kernel_uarg->uspace_stack)+95 ustate.sp = kernel_uarg->uspace_stack + 96 96 kernel_uarg->uspace_stack_size; 97 97 98 98 /* set where uspace execution starts */ 99 ustate.pc = (uintptr_t)kernel_uarg->uspace_entry;99 ustate.pc = kernel_uarg->uspace_entry; 100 100 101 101 /* status register in user mode */ -
kernel/arch/arm64/src/arm64.c
ref705e14 re39d7b8 156 156 157 157 /* Set program entry. */ 158 ELR_EL1_write( (uint64_t)kernel_uarg->uspace_entry);158 ELR_EL1_write(kernel_uarg->uspace_entry); 159 159 160 160 /* Set user stack. */ 161 SP_EL0_write( ((uint64_t)kernel_uarg->uspace_stack +162 kernel_uarg->uspace_stack_size) );161 SP_EL0_write(kernel_uarg->uspace_stack + 162 kernel_uarg->uspace_stack_size); 163 163 164 164 /* Clear Thread ID register. */ -
kernel/arch/arm64/src/debug/stacktrace.c
ref705e14 re39d7b8 68 68 bool uspace_frame_pointer_prev(stack_trace_context_t *ctx, uintptr_t *prev) 69 69 { 70 return !copy_from_uspace( (void *)prev,71 (uint64_t *) ctx->fp +FRAME_OFFSET_FP_PREV, sizeof(*prev));70 return !copy_from_uspace(prev, 71 ctx->fp + sizeof(uintptr_t) * FRAME_OFFSET_FP_PREV, sizeof(*prev)); 72 72 } 73 73 74 74 bool uspace_return_address_get(stack_trace_context_t *ctx, uintptr_t *ra) 75 75 { 76 return !copy_from_uspace( (void *)ra,77 (uint64_t *) ctx->fp +FRAME_OFFSET_RA, sizeof(*ra));76 return !copy_from_uspace(ra, 77 ctx->fp + sizeof(uintptr_t) * FRAME_OFFSET_RA, sizeof(*ra)); 78 78 } 79 79 -
kernel/arch/ia32/src/debug/stacktrace.c
ref705e14 re39d7b8 67 67 bool uspace_frame_pointer_prev(stack_trace_context_t *ctx, uintptr_t *prev) 68 68 { 69 return !copy_from_uspace( (void *)prev,70 (uint32_t *) ctx->fp +FRAME_OFFSET_FP_PREV, sizeof(*prev));69 return !copy_from_uspace(prev, 70 ctx->fp + sizeof(uintptr_t) * FRAME_OFFSET_FP_PREV, sizeof(*prev)); 71 71 } 72 72 73 73 bool uspace_return_address_get(stack_trace_context_t *ctx, uintptr_t *ra) 74 74 { 75 return !copy_from_uspace( (void *)ra,76 (uint32_t *) ctx->fp +FRAME_OFFSET_RA, sizeof(*ra));75 return !copy_from_uspace(ra, 76 ctx->fp + sizeof(uintptr_t) * FRAME_OFFSET_RA, sizeof(*ra)); 77 77 } 78 78 -
kernel/arch/ia32/src/userspace.c
ref705e14 re39d7b8 70 70 : [eflags_mask] "i" (~EFLAGS_NT), 71 71 [udata_des] "i" (GDT_SELECTOR(UDATA_DES) | PL_USER), 72 [stack_top] "r" ( (uint8_t *)kernel_uarg->uspace_stack +72 [stack_top] "r" (kernel_uarg->uspace_stack + 73 73 kernel_uarg->uspace_stack_size), 74 74 [eflags] "r" ((eflags & ~(EFLAGS_NT)) | EFLAGS_IF), -
kernel/arch/ia64/src/ia64.c
ref705e14 re39d7b8 244 244 * uspace_stack_size / 2 bytes. 245 245 */ 246 switch_to_userspace( (uintptr_t)kernel_uarg->uspace_entry,247 ((uintptr_t) kernel_uarg->uspace_stack)+246 switch_to_userspace(kernel_uarg->uspace_entry, 247 kernel_uarg->uspace_stack + 248 248 kernel_uarg->uspace_stack_size / 2 - 249 249 ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT), 250 ((uintptr_t) kernel_uarg->uspace_stack)+250 kernel_uarg->uspace_stack + 251 251 kernel_uarg->uspace_stack_size / 2, 252 (uintptr_t)kernel_uarg->uspace_uarg, psr.value, rsc.value);252 kernel_uarg->uspace_uarg, psr.value, rsc.value); 253 253 254 254 while (true) -
kernel/arch/mips32/src/mips32.c
ref705e14 re39d7b8 171 171 cp0_status_write(cp0_status_read() | (cp0_status_exl_exception_bit | 172 172 cp0_status_um_bit | cp0_status_ie_enabled_bit)); 173 cp0_epc_write( (uintptr_t)kernel_uarg->uspace_entry);174 userspace_asm( ((uintptr_t)kernel_uarg->uspace_stack +175 kernel_uarg->uspace_stack_size ),176 (uintptr_t)kernel_uarg->uspace_uarg,177 (uintptr_t)kernel_uarg->uspace_entry);173 cp0_epc_write(kernel_uarg->uspace_entry); 174 userspace_asm(kernel_uarg->uspace_stack + 175 kernel_uarg->uspace_stack_size, 176 kernel_uarg->uspace_uarg, 177 kernel_uarg->uspace_entry); 178 178 179 179 while (true) -
kernel/arch/ppc32/src/debug/stacktrace.c
ref705e14 re39d7b8 67 67 bool uspace_frame_pointer_prev(stack_trace_context_t *ctx, uintptr_t *prev) 68 68 { 69 return !copy_from_uspace( (void *)prev,70 (uint32_t *) ctx->fp +FRAME_OFFSET_FP_PREV, sizeof(*prev));69 return !copy_from_uspace(prev, 70 ctx->fp + sizeof(uintptr_t) * FRAME_OFFSET_FP_PREV, sizeof(*prev)); 71 71 } 72 72 73 73 bool uspace_return_address_get(stack_trace_context_t *ctx, uintptr_t *ra) 74 74 { 75 return !copy_from_uspace( (void *)ra,76 (uint32_t *) ctx->fp +FRAME_OFFSET_RA, sizeof(*ra));75 return !copy_from_uspace(ra, 76 ctx->fp + sizeof(uintptr_t) * FRAME_OFFSET_RA, sizeof(*ra)); 77 77 } 78 78 -
kernel/arch/ppc32/src/ppc32.c
ref705e14 re39d7b8 292 292 void userspace(uspace_arg_t *kernel_uarg) 293 293 { 294 userspace_asm( (uintptr_t)kernel_uarg->uspace_uarg,295 (uintptr_t)kernel_uarg->uspace_stack +294 userspace_asm(kernel_uarg->uspace_uarg, 295 kernel_uarg->uspace_stack + 296 296 kernel_uarg->uspace_stack_size - SP_DELTA, 297 (uintptr_t)kernel_uarg->uspace_entry);297 kernel_uarg->uspace_entry); 298 298 299 299 unreachable(); -
kernel/arch/riscv64/src/riscv64.c
ref705e14 re39d7b8 143 143 } 144 144 145 uintptr_t memcpy_from_uspace(void *dst, const void *uspace_src, size_t size)145 uintptr_t memcpy_from_uspace(void *dst, uspace_addr_t uspace_src, size_t size) 146 146 { 147 147 return 0; 148 148 } 149 149 150 uintptr_t memcpy_to_uspace( void *uspace_dst, const void *src, size_t size)150 uintptr_t memcpy_to_uspace(uspace_addr_t uspace_dst, const void *src, size_t size) 151 151 { 152 152 return 0; -
kernel/arch/sparc64/src/sun4u/sparc64.c
ref705e14 re39d7b8 163 163 { 164 164 (void) interrupts_disable(); 165 switch_to_userspace( (uintptr_t)kernel_uarg->uspace_entry,166 ((uintptr_t) kernel_uarg->uspace_stack)+165 switch_to_userspace(kernel_uarg->uspace_entry, 166 kernel_uarg->uspace_stack + 167 167 kernel_uarg->uspace_stack_size - 168 168 (ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT) + STACK_BIAS), 169 (uintptr_t)kernel_uarg->uspace_uarg);169 kernel_uarg->uspace_uarg); 170 170 171 171 /* Not reached */ -
kernel/arch/sparc64/src/sun4v/sparc64.c
ref705e14 re39d7b8 161 161 { 162 162 (void) interrupts_disable(); 163 switch_to_userspace( (uintptr_t)kernel_uarg->uspace_entry,164 ((uintptr_t) kernel_uarg->uspace_stack)+163 switch_to_userspace(kernel_uarg->uspace_entry, 164 kernel_uarg->uspace_stack + 165 165 kernel_uarg->uspace_stack_size - 166 166 (ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT) + STACK_BIAS), 167 (uintptr_t)kernel_uarg->uspace_uarg);167 kernel_uarg->uspace_uarg); 168 168 169 169 /* Not reached */
Note:
See TracChangeset
for help on using the changeset viewer.