Changeset e28175d in mainline for kernel/arch
- Timestamp:
- 2020-03-15T10:44:02Z (6 years ago)
- Parents:
- b401b33 (diff), 44dde42 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - git-author:
- heiducteam <tristanided@…> (2020-03-15 10:44:02)
- git-committer:
- GitHub <noreply@…> (2020-03-15 10:44:02)
- Location:
- kernel/arch
- Files:
-
- 5 added
- 8 deleted
- 37 edited
- 5 moved
-
abs32le/Makefile.inc (deleted)
-
abs32le/meson.build (added)
-
abs32le/src/abs32le.c (modified) (1 diff)
-
amd64/Makefile.inc (deleted)
-
amd64/include/arch/interrupt.h (modified) (1 diff)
-
amd64/include/arch/mm/page.h (modified) (2 diffs)
-
amd64/meson.build (added)
-
amd64/src/amd64.c (modified) (5 diffs)
-
amd64/src/debug/stacktrace.c (modified) (1 diff)
-
amd64/src/interrupt.c (modified) (8 diffs)
-
amd64/src/userspace.c (modified) (1 diff)
-
arm32/Makefile.inc (deleted)
-
arm32/meson.build (added)
-
arm32/src/debug/stacktrace.c (modified) (1 diff)
-
arm32/src/userspace.c (modified) (2 diffs)
-
arm64/Makefile.inc (deleted)
-
arm64/meson.build (moved) (moved from uspace/lib/c/arch/arm64/Makefile.inc ) (1 diff)
-
arm64/src/arm64.c (modified) (3 diffs)
-
arm64/src/debug/stacktrace.c (modified) (1 diff)
-
ia32/Makefile.inc (deleted)
-
ia32/include/arch/interrupt.h (modified) (1 diff)
-
ia32/include/arch/mm/page.h (modified) (2 diffs)
-
ia32/include/arch/smp/apic.h (modified) (2 diffs)
-
ia32/meson.build (added)
-
ia32/src/debug/stacktrace.c (modified) (1 diff)
-
ia32/src/drivers/i8254.c (modified) (1 diff)
-
ia32/src/ia32.c (modified) (5 diffs)
-
ia32/src/interrupt.c (modified) (8 diffs)
-
ia32/src/smp/apic.c (modified) (5 diffs)
-
ia32/src/smp/smp.c (modified) (1 diff)
-
ia32/src/userspace.c (modified) (1 diff)
-
ia64/include/arch/interrupt.h (modified) (1 diff)
-
ia64/include/arch/istate.h (modified) (1 diff)
-
ia64/include/arch/mm/page.h (modified) (2 diffs)
-
ia64/include/arch/register.h (modified) (1 diff)
-
ia64/meson.build (added)
-
ia64/src/ia64.c (modified) (1 diff)
-
ia64/src/interrupt.c (modified) (1 diff)
-
ia64/src/mm/tlb.c (modified) (8 diffs)
-
mips32/meson.build (moved) (moved from uspace/srv/loader/Makefile ) (2 diffs)
-
mips32/src/mach/malta/malta.c (modified) (3 diffs)
-
mips32/src/mips32.c (modified) (2 diffs)
-
ppc32/Makefile.inc (deleted)
-
ppc32/include/arch/mm/page.h (modified) (2 diffs)
-
ppc32/meson.build (moved) (moved from uspace/lib/c/arch/amd64/Makefile.common ) (1 diff)
-
ppc32/src/debug/stacktrace.c (modified) (1 diff)
-
ppc32/src/ppc32.c (modified) (1 diff)
-
riscv64/Makefile.inc (deleted)
-
riscv64/_link.ld.in (modified) (1 diff)
-
riscv64/meson.build (moved) (moved from boot/arch/riscv64/Makefile.inc ) (1 diff)
-
riscv64/src/riscv64.c (modified) (1 diff)
-
sparc64/Makefile.inc (deleted)
-
sparc64/meson.build (moved) (moved from kernel/arch/mips32/Makefile.inc ) (1 diff)
-
sparc64/src/sun4u/sparc64.c (modified) (1 diff)
-
sparc64/src/sun4v/sparc64.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/abs32le/src/abs32le.c
rb401b33 re28175d 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/include/arch/interrupt.h
rb401b33 re28175d 84 84 #define VECTOR_DEBUG_IPI (IVT_FREEBASE + 2) 85 85 86 extern void (*disable_irqs_function)(uint16_t);87 extern void (*enable_irqs_function)(uint16_t);88 extern void (*eoi_function)(unsigned int);89 extern const char *irqs_info;90 91 86 extern void interrupt_init(void); 92 extern void trap_virtual_enable_irqs(uint16_t);93 extern void trap_virtual_disable_irqs(uint16_t);94 87 95 88 #endif -
kernel/arch/amd64/include/arch/mm/page.h
rb401b33 re28175d 37 37 38 38 #include <arch/mm/frame.h> 39 #include <trace.h>40 39 41 40 #define PAGE_WIDTH FRAME_WIDTH … … 164 163 #ifndef __ASSEMBLER__ 165 164 165 #include <arch/interrupt.h> 166 166 #include <mm/mm.h> 167 #include < arch/interrupt.h>167 #include <trace.h> 168 168 #include <typedefs.h> 169 169 -
kernel/arch/amd64/src/amd64.c
rb401b33 re28175d 60 60 #include <arch/vreg.h> 61 61 #include <arch/kseg.h> 62 #include <genarch/pic/pic_ops.h> 62 63 63 64 #ifdef CONFIG_SMP … … 123 124 (i8259_t *) I8259_PIC1_BASE, IVT_IRQBASE); 124 125 125 /* 126 * Set the enable/disable IRQs handlers. 127 * Set the End-of-Interrupt handler. 128 */ 129 enable_irqs_function = pic_enable_irqs; 130 disable_irqs_function = pic_disable_irqs; 131 eoi_function = pic_eoi; 132 irqs_info = "i8259"; 126 /* Set PIC operations. */ 127 pic_ops = &i8259_pic_ops; 133 128 } 134 129 } … … 209 204 indev_t *kbrd = kbrd_wire(kbrd_instance, sink); 210 205 i8042_wire(i8042_instance, kbrd); 211 trap_virtual_enable_irqs(1 << IRQ_KBD);212 trap_virtual_enable_irqs(1 << IRQ_MOUSE);206 pic_ops->enable_irqs(1 << IRQ_KBD); 207 pic_ops->enable_irqs(1 << IRQ_MOUSE); 213 208 } 214 209 } … … 235 230 indev_t *srln = srln_wire(srln_instance, sink); 236 231 ns16550_wire(ns16550_instance, srln); 237 trap_virtual_enable_irqs(1 << IRQ_NS16550);232 pic_ops->enable_irqs(1 << IRQ_NS16550); 238 233 } 239 234 #endif … … 246 241 #endif 247 242 248 if (irqs_info != NULL) 249 sysinfo_set_item_val(irqs_info, NULL, true); 243 sysinfo_set_item_val(pic_ops->get_name(), NULL, true); 250 244 } 251 245 -
kernel/arch/amd64/src/debug/stacktrace.c
rb401b33 re28175d 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/interrupt.c
rb401b33 re28175d 38 38 #include <panic.h> 39 39 #include <genarch/drivers/i8259/i8259.h> 40 #include <genarch/pic/pic_ops.h> 40 41 #include <halt.h> 41 42 #include <cpu.h> … … 57 58 * Interrupt and exception dispatching. 58 59 */ 59 60 void (*disable_irqs_function)(uint16_t irqmask) = NULL; 61 void (*enable_irqs_function)(uint16_t irqmask) = NULL; 62 void (*eoi_function)(unsigned int) = NULL; 63 const char *irqs_info = NULL; 60 pic_ops_t *pic_ops = NULL; 64 61 65 62 void istate_decode(istate_t *istate) … … 89 86 "r14=%0#18" PRIx64 "\tr15=%0#18" PRIx64 "\n", 90 87 istate->r12, istate->r13, istate->r14, istate->r15); 91 }92 93 static void trap_virtual_eoi(unsigned int irq)94 {95 if (eoi_function)96 eoi_function(irq);97 else98 panic("No eoi_function.");99 100 88 } 101 89 … … 157 145 static void tlb_shootdown_ipi(unsigned int n, istate_t *istate) 158 146 { 159 trap_virtual_eoi(0);147 pic_ops->eoi(0); 160 148 tlb_shootdown_ipi_recv(); 161 149 } … … 182 170 if (irq->preack) { 183 171 /* Send EOI before processing the interrupt */ 184 trap_virtual_eoi(inum);172 pic_ops->eoi(inum); 185 173 ack = true; 186 174 } … … 195 183 196 184 if (!ack) 197 trap_virtual_eoi(inum);185 pic_ops->eoi(inum); 198 186 } 199 187 … … 201 189 { 202 190 unsigned int inum = n - IVT_IRQBASE; 203 if (!pic_ is_spurious(inum)) {191 if (!pic_ops->is_spurious(inum)) { 204 192 /* This is actually not a spurious IRQ, so proceed as usual. */ 205 193 irq_interrupt(n, istate); 206 194 return; 207 195 } 208 pic_ handle_spurious(n);196 pic_ops->handle_spurious(n); 209 197 #ifdef CONFIG_DEBUG 210 198 log(LF_ARCH, LVL_DEBUG, "cpu%u: PIC spurious interrupt %u", CPU->id, … … 242 230 } 243 231 244 void trap_virtual_enable_irqs(uint16_t irqmask)245 {246 if (enable_irqs_function)247 enable_irqs_function(irqmask);248 else249 panic("No enable_irqs_function.");250 }251 252 void trap_virtual_disable_irqs(uint16_t irqmask)253 {254 if (disable_irqs_function)255 disable_irqs_function(irqmask);256 else257 panic("No disable_irqs_function.");258 }259 260 232 /** @} 261 233 */ -
kernel/arch/amd64/src/userspace.c
rb401b33 re28175d 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
rb401b33 re28175d 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
rb401b33 re28175d 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/meson.build
rb401b33 re28175d 27 27 # 28 28 29 ARCH_SOURCES = \ 30 arch/$(UARCH)/src/entryjmp.S \ 31 arch/$(UARCH)/src/fibril.S \ 32 arch/$(UARCH)/src/stacktrace.c \ 33 arch/$(UARCH)/src/stacktrace_asm.S \ 34 arch/$(UARCH)/src/syscall.c \ 35 arch/$(UARCH)/src/tls.c \ 36 arch/$(UARCH)/src/thread_entry.S 29 arch_src += files( 30 'src/arm64.c', 31 'src/asm.S', 32 'src/context.S', 33 'src/cpu/cpu.c', 34 'src/debug/stacktrace.c', 35 'src/debug/stacktrace_asm.S', 36 'src/exception.c', 37 'src/fpu.S', 38 'src/fpu_context.c', 39 'src/interrupt.c', 40 'src/machine_func.c', 41 'src/mm/as.c', 42 'src/mm/frame.c', 43 'src/mm/km.c', 44 'src/mm/page.c', 45 'src/mm/tlb.c', 46 'src/smc.c', 47 'src/smp/ipi.c', 48 'src/smp/smp.c', 49 'src/start.S', 50 ) 37 51 38 ARCH_AUTOCHECK_HEADERS = \ 39 arch/$(UARCH)/include/libarch/fibril_context.h 52 if MACHINE == 'virt' 53 arch_src += files('src/mach/virt/virt.c') 54 endif 55 56 _check_headers = [ 57 'include/arch/context_struct.h', 58 'include/arch/fpu_context_struct.h', 59 'include/arch/istate_struct.h', 60 ] 61 62 foreach h : _check_headers 63 arch_src += [ autocheck.process(h) ] 64 endforeach -
kernel/arch/arm64/src/arm64.c
rb401b33 re28175d 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. */ … … 167 167 asm volatile ( 168 168 /* 169 * Clear all general-purpose registers, except x0 that holds an 170 * argument for the user space. 169 * Reset the kernel stack to its base value. 170 * 171 * Clear all general-purpose registers, 172 * except x0 that holds an argument for 173 * the user space. 171 174 */ 175 "mov sp, %[kstack]\n" 172 176 "mov x0, %[uspace_uarg]\n" 173 177 "mov x1, #0\n" … … 202 206 "mov x30, #0\n" 203 207 "eret\n" 204 :: [uspace_uarg] "r" (kernel_uarg->uspace_uarg) 208 :: [uspace_uarg] "r" (kernel_uarg->uspace_uarg), 209 [kstack] "r" (((uint64_t) (THREAD->kstack)) + 210 MEM_STACK_SIZE - SP_DELTA) 205 211 ); 206 212 -
kernel/arch/arm64/src/debug/stacktrace.c
rb401b33 re28175d 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/include/arch/interrupt.h
rb401b33 re28175d 88 88 #define VECTOR_DEBUG_IPI (IVT_FREEBASE + 2) 89 89 90 extern void (*disable_irqs_function)(uint16_t);91 extern void (*enable_irqs_function)(uint16_t);92 extern void (*eoi_function)(unsigned int);93 extern const char *irqs_info;94 95 90 extern void interrupt_init(void); 96 extern void trap_virtual_enable_irqs(uint16_t);97 extern void trap_virtual_disable_irqs(uint16_t);98 91 99 92 #endif -
kernel/arch/ia32/include/arch/mm/page.h
rb401b33 re28175d 38 38 #include <arch/mm/frame.h> 39 39 #include <stdbool.h> 40 #include <trace.h>41 40 42 41 #define PAGE_WIDTH FRAME_WIDTH … … 147 146 #include <arch/interrupt.h> 148 147 #include <stddef.h> 148 #include <trace.h> 149 149 150 150 /* Page fault error codes. */ -
kernel/arch/ia32/include/arch/smp/apic.h
rb401b33 re28175d 43 43 #include <cpu.h> 44 44 #include <stdint.h> 45 #include <genarch/pic/pic_ops.h> 45 46 46 47 #define FIXED (0 << 0) … … 347 348 } io_apic_id_t; 348 349 350 extern pic_ops_t apic_pic_ops; 351 349 352 extern volatile uint32_t *l_apic; 350 353 extern volatile uint32_t *io_apic; -
kernel/arch/ia32/src/debug/stacktrace.c
rb401b33 re28175d 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/drivers/i8254.c
rb401b33 re28175d 96 96 { 97 97 pio_write_8(CLK_PORT4, 0x36); 98 pic_disable_irqs(1 << IRQ_CLK);98 i8259_disable_irqs(1 << IRQ_CLK); 99 99 pio_write_8(CLK_PORT1, (CLK_CONST / HZ) & 0xf); 100 100 pio_write_8(CLK_PORT1, (CLK_CONST / HZ) >> 8); 101 pic_enable_irqs(1 << IRQ_CLK);101 i8259_enable_irqs(1 << IRQ_CLK); 102 102 } 103 103 -
kernel/arch/ia32/src/ia32.c
rb401b33 re28175d 58 58 #include <genarch/multiboot/multiboot.h> 59 59 #include <genarch/multiboot/multiboot2.h> 60 #include <genarch/pic/pic_ops.h> 60 61 #include <arch/pm.h> 61 62 #include <arch/vreg.h> … … 112 113 (i8259_t *) I8259_PIC1_BASE, IVT_IRQBASE); 113 114 114 /* 115 * Set the enable/disable IRQs handlers. 116 * Set the End-of-Interrupt handler. 117 */ 118 enable_irqs_function = pic_enable_irqs; 119 disable_irqs_function = pic_disable_irqs; 120 eoi_function = pic_eoi; 121 irqs_info = "i8259"; 115 /* Set PIC operations. */ 116 pic_ops = &i8259_pic_ops; 122 117 } 123 118 } … … 194 189 indev_t *kbrd = kbrd_wire(kbrd_instance, sink); 195 190 i8042_wire(i8042_instance, kbrd); 196 trap_virtual_enable_irqs(1 << IRQ_KBD);197 trap_virtual_enable_irqs(1 << IRQ_MOUSE);191 pic_ops->enable_irqs(1 << IRQ_KBD); 192 pic_ops->enable_irqs(1 << IRQ_MOUSE); 198 193 } 199 194 } … … 220 215 indev_t *srln = srln_wire(srln_instance, sink); 221 216 ns16550_wire(ns16550_instance, srln); 222 trap_virtual_enable_irqs(1 << IRQ_NS16550);217 pic_ops->enable_irqs(1 << IRQ_NS16550); 223 218 } 224 219 #endif … … 231 226 #endif 232 227 233 if (irqs_info != NULL) 234 sysinfo_set_item_val(irqs_info, NULL, true); 228 sysinfo_set_item_val(pic_ops->get_name(), NULL, true); 235 229 } 236 230 -
kernel/arch/ia32/src/interrupt.c
rb401b33 re28175d 40 40 #include <panic.h> 41 41 #include <genarch/drivers/i8259/i8259.h> 42 #include <genarch/pic/pic_ops.h> 42 43 #include <halt.h> 43 44 #include <cpu.h> … … 61 62 */ 62 63 63 void (*disable_irqs_function)(uint16_t irqmask) = NULL; 64 void (*enable_irqs_function)(uint16_t irqmask) = NULL; 65 void (*eoi_function)(unsigned int) = NULL; 66 const char *irqs_info = NULL; 64 pic_ops_t *pic_ops = NULL; 67 65 68 66 void istate_decode(istate_t *istate) … … 88 86 istate_from_uspace(istate) ? istate->esp : 89 87 (uint32_t) &istate->esp); 90 }91 92 static void trap_virtual_eoi(unsigned int inum)93 {94 if (eoi_function)95 eoi_function(inum);96 else97 panic("No eoi_function.");98 99 88 } 100 89 … … 179 168 istate_t *istate __attribute__((unused))) 180 169 { 181 trap_virtual_eoi(0);170 pic_ops->eoi(0); 182 171 tlb_shootdown_ipi_recv(); 183 172 } … … 202 191 if (irq->preack) { 203 192 /* Send EOI before processing the interrupt */ 204 trap_virtual_eoi(inum);193 pic_ops->eoi(inum); 205 194 ack = true; 206 195 } … … 215 204 216 205 if (!ack) 217 trap_virtual_eoi(inum);206 pic_ops->eoi(inum); 218 207 } 219 208 … … 221 210 { 222 211 unsigned int inum = n - IVT_IRQBASE; 223 if (!pic_ is_spurious(inum)) {212 if (!pic_ops->is_spurious(inum)) { 224 213 /* This is actually not a spurious IRQ, so proceed as usual. */ 225 214 irq_interrupt(n, istate); 226 215 return; 227 216 } 228 pic_ handle_spurious(n);217 pic_ops->handle_spurious(n); 229 218 #ifdef CONFIG_DEBUG 230 219 log(LF_ARCH, LVL_DEBUG, "cpu%u: PIC spurious interrupt %u", CPU->id, … … 264 253 } 265 254 266 void trap_virtual_enable_irqs(uint16_t irqmask)267 {268 if (enable_irqs_function)269 enable_irqs_function(irqmask);270 else271 panic("No enable_irqs_function.");272 }273 274 void trap_virtual_disable_irqs(uint16_t irqmask)275 {276 if (disable_irqs_function)277 disable_irqs_function(irqmask);278 else279 panic("No disable_irqs_function.");280 }281 282 255 /** @} 283 256 */ -
kernel/arch/ia32/src/smp/apic.c
rb401b33 re28175d 47 47 #include <arch.h> 48 48 #include <ddi/irq.h> 49 #include <genarch/pic/pic_ops.h> 49 50 50 51 #ifdef CONFIG_SMP … … 63 64 */ 64 65 66 static const char *apic_get_name(void); 67 static bool l_apic_is_spurious(unsigned int); 68 static void l_apic_handle_spurious(unsigned int); 69 70 pic_ops_t apic_pic_ops = { 71 .get_name = apic_get_name, 72 .enable_irqs = io_apic_enable_irqs, 73 .disable_irqs = io_apic_disable_irqs, 74 .eoi = l_apic_eoi, 75 .is_spurious = l_apic_is_spurious, 76 .handle_spurious = l_apic_handle_spurious, 77 }; 78 65 79 /* 66 80 * These variables either stay configured as initilalized, or are changed by … … 125 139 #endif /* LAPIC_VERBOSE */ 126 140 141 const char *apic_get_name(void) 142 { 143 return "apic"; 144 } 145 146 bool l_apic_is_spurious(unsigned int n) 147 { 148 return n == VECTOR_APIC_SPUR; 149 } 150 151 void l_apic_handle_spurious(unsigned int n) 152 { 153 } 154 127 155 /** APIC spurious interrupt handler. 128 156 * … … 134 162 istate_t *istate __attribute__((unused))) 135 163 { 136 #ifdef CONFIG_DEBUG137 log(LF_ARCH, LVL_DEBUG, "cpu%u: APIC spurious interrupt", CPU->id);138 #endif139 164 } 140 165 … … 175 200 (iroutine_t) apic_spurious); 176 201 177 enable_irqs_function = io_apic_enable_irqs; 178 disable_irqs_function = io_apic_disable_irqs; 179 eoi_function = l_apic_eoi; 180 irqs_info = "apic"; 202 pic_ops = &apic_pic_ops; 181 203 182 204 /* -
kernel/arch/ia32/src/smp/smp.c
rb401b33 re28175d 130 130 pio_write_8((ioport8_t *) 0x71, 0xa); 131 131 132 pic_disable_irqs(0xffff);132 i8259_disable_irqs(0xffff); 133 133 apic_init(); 134 134 -
kernel/arch/ia32/src/userspace.c
rb401b33 re28175d 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/include/arch/interrupt.h
rb401b33 re28175d 92 92 extern void disabled_fp_register(unsigned int, istate_t *); 93 93 94 extern void trap_virtual_enable_irqs(uint16_t);95 96 94 void exception_init(void); 97 95 #endif -
kernel/arch/ia64/include/arch/istate.h
rb401b33 re28175d 71 71 _NO_TRACE static inline int istate_from_uspace(istate_t *istate) 72 72 { 73 return (istate->cr_iip) < 0xe000000000000000ULL;73 return istate->cr_ipsr.cpl == PSR_CPL_USER; 74 74 } 75 75 -
kernel/arch/ia64/include/arch/mm/page.h
rb401b33 re28175d 38 38 39 39 #include <arch/mm/frame.h> 40 #include <arch/register.h> 40 41 41 42 #ifndef __ASSEMBLER__ … … 76 77 77 78 /** Privilege Levels. Only the most and the least privileged ones are ever used. */ 78 #define PL_KERNEL 0x0079 #define PL_USER 0x0379 #define PL_KERNEL PSR_CPL_KERNEL 80 #define PL_USER PSR_CPL_USER 80 81 81 82 /* Access Rigths. Only certain combinations are used by the kernel. */ -
kernel/arch/ia64/include/arch/register.h
rb401b33 re28175d 57 57 #define PSR_RT_MASK (1 << 27) 58 58 #define PSR_IT_MASK (1 << 36) 59 60 #define PSR_CPL_USER 3 61 #define PSR_CPL_KERNEL 0 59 62 60 63 #define PSR_CPL_SHIFT 32 -
kernel/arch/ia64/src/ia64.c
rb401b33 re28175d 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/ia64/src/interrupt.c
rb401b33 re28175d 301 301 } 302 302 303 void trap_virtual_enable_irqs(uint16_t irqmask)304 {305 }306 307 303 void exception_init(void) 308 304 { -
kernel/arch/ia64/src/mm/tlb.c
rb401b33 re28175d 464 464 } 465 465 466 static bool is_kernel_fault( uintptr_t va)466 static bool is_kernel_fault(istate_t *istate, uintptr_t va) 467 467 { 468 468 region_register_t rr; 469 470 if (istate_from_uspace(istate)) 471 return false; 469 472 470 473 rr.word = rr_read(VA2VRN(va)); … … 484 487 pte_t t; 485 488 489 assert(istate_from_uspace(istate)); 490 486 491 va = istate->cr_ifa; /* faulting address */ 487 488 assert(!is_kernel_fault(va));489 492 490 493 bool found = page_mapping_find(AS, va, true, &t); … … 587 590 as_t *as = AS; 588 591 589 if (is_kernel_fault( va)) {592 if (is_kernel_fault(istate, va)) { 590 593 if (va < end_of_identity) { 591 594 /* … … 648 651 va = istate->cr_ifa; /* faulting address */ 649 652 650 if (is_kernel_fault( va))653 if (is_kernel_fault(istate, va)) 651 654 as = AS_KERNEL; 652 655 … … 680 683 pte_t t; 681 684 685 assert(istate_from_uspace(istate)); 686 682 687 va = istate->cr_ifa; /* faulting address */ 683 684 assert(!is_kernel_fault(va));685 688 686 689 bool found = page_mapping_find(AS, va, true, &t); … … 716 719 va = istate->cr_ifa; /* faulting address */ 717 720 718 if (is_kernel_fault( va))721 if (is_kernel_fault(istate, va)) 719 722 as = AS_KERNEL; 720 723 … … 752 755 pte_t t; 753 756 757 assert(istate_from_uspace(istate)); 758 754 759 va = istate->cr_ifa; /* faulting address */ 755 756 assert(!is_kernel_fault(va));757 760 758 761 /* … … 779 782 pte_t t; 780 783 784 assert(istate_from_uspace(istate)); 785 781 786 va = istate->cr_ifa; /* faulting address */ 782 783 assert(!is_kernel_fault(va));784 787 785 788 bool found = page_mapping_find(AS, va, true, &t); -
kernel/arch/mips32/meson.build
rb401b33 re28175d 1 1 # 2 2 # Copyright (c) 2005 Martin Decky 3 # Copyright (c) 2007 Jakub Jermar4 3 # All rights reserved. 5 4 # … … 28 27 # 29 28 30 USPACE_PREFIX = ../.. 31 ROOT_PATH = $(USPACE_PREFIX)/.. 32 CONFIG_MAKEFILE = $(ROOT_PATH)/Makefile.config 29 arch_src += files( 30 'src/start.S', 31 'src/context.S', 32 'src/mips32.c', 33 'src/asm.S', 34 'src/exception.c', 35 'src/interrupt.c', 36 'src/cache.c', 37 'src/debugger.c', 38 'src/cpu/cpu.c', 39 'src/debug/stacktrace.c', 40 'src/debug/stacktrace_asm.S', 41 'src/mm/km.c', 42 'src/mm/frame.c', 43 'src/mm/page.c', 44 'src/mm/tlb.c', 45 'src/mm/as.c', 46 'src/fpu_context.c', 47 'src/smc.c', 48 'src/smp/smp.c', 49 'src/machine_func.c', 50 ) 33 51 34 include $(CONFIG_MAKEFILE) 52 if MACHINE == 'lmalta' or MACHINE == 'bmalta' 53 arch_src += files('src/mach/malta/malta.c') 35 54 36 ifeq ($(UARCH),ia64) 37 # IA64 has a peculiar linker script with a fixed data segment address. 38 # Because the loader is a separate nonrelocatable binary in the same 39 # address space as the application, we provide a modified copy of 40 # the default linker script to work around that. 41 EXTRA_LDFLAGS = -T elf64_ia64_loader.x 42 else 43 # On all other architectures, we can simply move the text segment. 44 EXTRA_LDFLAGS = -Wl,-Ttext-segment=0x70000000 55 elif MACHINE == 'msim' 56 arch_src += files( 57 'src/mach/msim/msim.c', 58 'src/mach/msim/dorder.c', 59 ) 60 45 61 endif 46 62 47 BINARY = loader48 STATIC_NEEDED = y49 63 50 GENERIC_SOURCES = \ 51 main.c 64 _check_headers = [ 65 'include/arch/istate_struct.h', 66 'include/arch/context_struct.h', 67 'include/arch/fpu_context_struct.h', 68 ] 52 69 53 SOURCES = \ 54 $(GENERIC_SOURCES) \ 55 $(ARCH_SOURCES) 56 57 include $(USPACE_PREFIX)/Makefile.common 70 foreach h : _check_headers 71 arch_src += [ autocheck.process(h) ] 72 endforeach -
kernel/arch/mips32/src/mach/malta/malta.c
rb401b33 re28175d 75 75 { 76 76 uint8_t isa_irq = host2uint32_t_le(pio_read_32(GT64120_PCI0_INTACK)); 77 if ( pic_is_spurious(isa_irq)) {78 pic_handle_spurious(isa_irq);77 if (i8259_is_spurious(isa_irq)) { 78 i8259_handle_spurious(isa_irq); 79 79 #ifdef CONFIG_DEBUG 80 80 log(LF_ARCH, LVL_DEBUG, "cpu%u: PIC spurious interrupt %u", … … 93 93 #endif 94 94 } 95 pic_eoi(isa_irq);95 i8259_eoi(isa_irq); 96 96 } 97 97 … … 146 146 indev_t *srln = srln_wire(srln_instance, sink); 147 147 ns16550_wire(tty_instance, srln); 148 pic_enable_irqs(1 << TTY_ISA_IRQ);148 i8259_enable_irqs(1 << TTY_ISA_IRQ); 149 149 } 150 150 } -
kernel/arch/mips32/src/mips32.c
rb401b33 re28175d 71 71 arch_ops_t *arch_ops = &mips32_ops; 72 72 73 /*74 * Why the linker moves the variable 64K away in assembler75 * when not in .text section?76 */77 78 73 /* Stack pointer saved when entering user mode */ 79 uintptr_t supervisor_sp __attribute__((section(".text"))); 74 // FIXME: This won't work with SMP unless thread creation is globally serialized. 75 uintptr_t supervisor_sp; 80 76 81 77 size_t cpu_count = 0; … … 171 167 cp0_status_write(cp0_status_read() | (cp0_status_exl_exception_bit | 172 168 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);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); 178 174 179 175 while (true) -
kernel/arch/ppc32/include/arch/mm/page.h
rb401b33 re28175d 37 37 38 38 #include <arch/mm/frame.h> 39 #include <trace.h>40 39 41 40 #define PAGE_WIDTH FRAME_WIDTH … … 150 149 #include <mm/mm.h> 151 150 #include <arch/interrupt.h> 151 #include <trace.h> 152 152 153 153 /** Page Table Entry. */ -
kernel/arch/ppc32/meson.build
rb401b33 re28175d 27 27 # 28 28 29 # TODO: We need to implement DWARF unwinding and get rid of this flag. 30 COMMON_CFLAGS += -fno-omit-frame-pointer -Wl,-z,max-page-size=0x1000 29 arch_src += files( 30 'src/context.S', 31 'src/debug/stacktrace.c', 32 'src/debug/stacktrace_asm.S', 33 'src/fpu_context.S', 34 'src/boot/boot.S', 35 'src/ppc32.c', 36 'src/dummy.S', 37 'src/exception.S', 38 'src/interrupt.c', 39 'src/asm.S', 40 'src/cpu/cpu.c', 41 'src/proc/scheduler.c', 42 'src/smc.c', 43 'src/mm/km.c', 44 'src/mm/as.c', 45 'src/mm/frame.c', 46 'src/mm/page.c', 47 'src/mm/pht.c', 48 'src/mm/tlb.c', 49 'src/drivers/pic.c', 50 ) 31 51 32 # XXX: This architecture requires unoptimized TLS pointer access,33 # as with the GCC option `-mno-tls-direct-seg-refs`.34 # The `amd64-helenos` target defaults to this behavior.35 52 36 LDFLAGS += -Wl,--gc-sections 53 _check_headers = [ 54 'include/arch/istate_struct.h', 55 'include/arch/context_struct.h', 56 'include/arch/fpu_context_struct.h', 57 ] 37 58 38 ENDIANESS = LE 39 40 BFD_NAME = elf64-x86-64 41 BFD_ARCH = i386:x86-64 59 foreach h : _check_headers 60 arch_src += [ autocheck.process(h) ] 61 endforeach -
kernel/arch/ppc32/src/debug/stacktrace.c
rb401b33 re28175d 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
rb401b33 re28175d 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/_link.ld.in
rb401b33 re28175d 16 16 kernel_load_address = PA2KA(BOOT_OFFSET); 17 17 18 .image (PA2KA(BOOT_OFFSET) + SIZEOF_HEADERS) : AT ( SIZEOF_HEADERS) {18 .image (PA2KA(BOOT_OFFSET) + SIZEOF_HEADERS) : AT (BOOT_OFFSET + SIZEOF_HEADERS) { 19 19 ktext_start = .; 20 20 *(K_TEXT_START); -
kernel/arch/riscv64/meson.build
rb401b33 re28175d 27 27 # 28 28 29 BFD_NAME = elf64-littleriscv 30 BFD_OUTPUT = $(BFD_NAME) 31 BFD_ARCH = riscv 29 arch_src += files( 30 'src/boot/boot.S', 31 'src/asm.S', 32 'src/context.S', 33 'src/debug/stacktrace.c', 34 'src/drivers/ucb.c', 35 'src/proc/scheduler.c', 36 'src/proc/task.c', 37 'src/proc/thread.c', 38 'src/riscv64.c', 39 'src/userspace.c', 40 'src/smc.c', 41 'src/cpu/cpu.c', 42 'src/mm/km.c', 43 'src/mm/as.c', 44 'src/mm/frame.c', 45 'src/mm/page.c', 46 'src/mm/tlb.c', 47 ) 32 48 33 BITS = 6434 ENDIANESS = LE35 EXTRA_CFLAGS = -mcmodel=medany36 49 37 SOURCES = \ 38 arch/$(BARCH)/src/asm.S \ 39 arch/$(BARCH)/src/main.c \ 40 arch/$(BARCH)/src/ucb.c \ 41 arch/$(BARCH)/src/putchar.c \ 42 $(COMPS).o \ 43 generic/src/memstr.c \ 44 generic/src/printf_core.c \ 45 generic/src/vprintf.c \ 46 generic/src/printf.c \ 47 generic/src/str.c \ 48 generic/src/version.c \ 49 generic/src/inflate.c \ 50 generic/src/gzip.c \ 51 generic/src/tar.c \ 52 generic/src/kernel.c \ 53 generic/src/payload.c 50 _check_headers = [ 51 'include/arch/istate_struct.h', 52 'include/arch/context_struct.h', 53 ] 54 55 foreach h : _check_headers 56 arch_src += [ autocheck.process(h) ] 57 endforeach -
kernel/arch/riscv64/src/riscv64.c
rb401b33 re28175d 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/meson.build
rb401b33 re28175d 27 27 # 28 28 29 COMMON_CFLAGS += -msoft-float -mno-abicalls -G 0 -fno-zero-initialized-in-bss -mabi=32 30 AS_PROLOG = .module softfloat; 31 32 BITS = 32 33 34 ## Accepted MACHINEs 35 # 36 37 ifeq ($(MACHINE),msim) 38 ENDIANESS = LE 39 COMMON_CFLAGS += -march=r4000 40 endif 41 ifeq ($(MACHINE),bmalta) 42 ENDIANESS = BE 43 COMMON_CFLAGS += -D__BE__ -march=4kc 44 endif 45 ifeq ($(MACHINE),lmalta) 46 ENDIANESS = LE 47 COMMON_CFLAGS += -march=4kc 29 if PROCESSOR == 'us' or PROCESSOR == 'us3' 30 USARCH = 'sun4u' 31 elif PROCESSOR == 'sun4v' 32 USARCH = 'sun4v' 33 else 34 error('Unknown PROCESSOR: ' + PROCESSOR) 48 35 endif 49 36 50 ARCH_SOURCES = \ 51 arch/$(KARCH)/src/start.S \ 52 arch/$(KARCH)/src/context.S \ 53 arch/$(KARCH)/src/mips32.c \ 54 arch/$(KARCH)/src/asm.S \ 55 arch/$(KARCH)/src/exception.c \ 56 arch/$(KARCH)/src/interrupt.c \ 57 arch/$(KARCH)/src/cache.c \ 58 arch/$(KARCH)/src/debugger.c \ 59 arch/$(KARCH)/src/cpu/cpu.c \ 60 arch/$(KARCH)/src/debug/stacktrace.c \ 61 arch/$(KARCH)/src/debug/stacktrace_asm.S \ 62 arch/$(KARCH)/src/mm/km.c \ 63 arch/$(KARCH)/src/mm/frame.c \ 64 arch/$(KARCH)/src/mm/page.c \ 65 arch/$(KARCH)/src/mm/tlb.c \ 66 arch/$(KARCH)/src/mm/as.c \ 67 arch/$(KARCH)/src/fpu_context.c \ 68 arch/$(KARCH)/src/smc.c \ 69 arch/$(KARCH)/src/smp/smp.c \ 70 arch/$(KARCH)/src/machine_func.c 37 arch_src += files( 38 'src/sparc64.c', 39 'src/cpu' / USARCH / 'cpu.c', 40 'src/debug/stacktrace.c', 41 'src/debug/stacktrace_asm.S', 42 'src/asm.S', 43 'src' / USARCH / 'asm.S', 44 'src/console.c', 45 'src/context.S', 46 'src/fpu_context.c', 47 'src/dummy.S', 48 'src/mm' / USARCH / 'km.c', 49 'src/mm' / USARCH / 'as.c', 50 'src/mm' / USARCH / 'frame.c', 51 'src/mm/page.c', 52 'src/mm' / USARCH / 'tlb.c', 53 'src' / USARCH / 'sparc64.c', 54 'src' / USARCH / 'start.S', 55 'src/proc' / USARCH / 'scheduler.c', 56 'src/proc/thread.c', 57 'src/smc.c', 58 'src/trap' / USARCH / 'mmu.S', 59 'src/trap' / USARCH / 'trap_table.S', 60 'src/trap/trap.c', 61 'src/trap/exception.c', 62 'src/trap/interrupt.c', 63 'src/drivers/tick.c', 64 'src/drivers/kbd.c', 65 'src/drivers/tty.c', 66 'src/drivers/pci.c', 67 'src/trap' / USARCH / 'interrupt.c', 68 ) 71 69 72 ifeq ($(MACHINE),$(filter lmalta bmalta,$(MACHINE))) 73 ARCH_SOURCES += arch/$(KARCH)/src/mach/malta/malta.c 70 if USARCH == 'sun4v' 71 arch_src += files( 72 'src/drivers/niagara.c', 73 'src/sun4v/md.c', 74 ) 74 75 endif 75 76 76 if eq ($(MACHINE),msim)77 ARCH_SOURCES += \78 arch/$(KARCH)/src/mach/msim/msim.c \79 arch/$(KARCH)/src/mach/msim/dorder.c77 if CONFIG_FB 78 arch_src += files( 79 'src/drivers/scr.c', 80 ) 80 81 endif 81 82 82 ARCH_AUTOCHECK_HEADERS = \ 83 arch/$(KARCH)/include/arch/istate_struct.h \ 84 arch/$(KARCH)/include/arch/context_struct.h \ 85 arch/$(KARCH)/include/arch/fpu_context_struct.h 83 if CONFIG_SMP 84 arch_src += files( 85 'src/smp' / USARCH / 'smp.c', 86 'src/smp' / USARCH / 'ipi.c', 87 ) 88 endif 89 90 if CONFIG_TSB 91 arch_src += files( 92 'src/mm' / USARCH / 'tsb.c', 93 ) 94 endif 95 96 97 _check_headers = [ 98 'include/arch/istate_struct.h', 99 'include/arch/context_struct.h', 100 ] 101 102 foreach h : _check_headers 103 arch_src += [ autocheck.process(h) ] 104 endforeach -
kernel/arch/sparc64/src/sun4u/sparc64.c
rb401b33 re28175d 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
rb401b33 re28175d 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.
