Changeset 5a5269d in mainline for kernel/arch
- Timestamp:
- 2019-07-02T12:03:55Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 98c4c16
- Parents:
- aca97582
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2019-07-02 12:03:55)
- git-committer:
- GitHub <noreply@…> (2019-07-02 12:03:55)
- Location:
- kernel/arch
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/abs32le/src/abs32le.c
raca97582 r5a5269d 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
raca97582 r5a5269d 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
raca97582 r5a5269d 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
raca97582 r5a5269d 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
raca97582 r5a5269d 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
raca97582 r5a5269d 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
raca97582 r5a5269d 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
raca97582 r5a5269d 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
raca97582 r5a5269d 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
raca97582 r5a5269d 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
raca97582 r5a5269d 167 167 cp0_status_write(cp0_status_read() | (cp0_status_exl_exception_bit | 168 168 cp0_status_um_bit | cp0_status_ie_enabled_bit)); 169 cp0_epc_write( (uintptr_t)kernel_uarg->uspace_entry);170 userspace_asm( ((uintptr_t)kernel_uarg->uspace_stack +171 kernel_uarg->uspace_stack_size ),172 (uintptr_t)kernel_uarg->uspace_uarg,173 (uintptr_t)kernel_uarg->uspace_entry);169 cp0_epc_write(kernel_uarg->uspace_entry); 170 userspace_asm(kernel_uarg->uspace_stack + 171 kernel_uarg->uspace_stack_size, 172 kernel_uarg->uspace_uarg, 173 kernel_uarg->uspace_entry); 174 174 175 175 while (true) -
kernel/arch/ppc32/src/debug/stacktrace.c
raca97582 r5a5269d 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
raca97582 r5a5269d 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
raca97582 r5a5269d 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
raca97582 r5a5269d 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
raca97582 r5a5269d 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.