58,9 → 58,10 |
if ((THREAD->flags & THREAD_FLAG_USPACE)) { |
uint64_t sp = (uintptr_t) THREAD->kstack + STACK_SIZE - |
(STACK_BIAS + ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT)); |
asi_u64_write(ASI_SCRATCHPAD, SCRATCHPAD_KSTACK, sp); |
asi_u64_write(ASI_SCRATCHPAD, SCRATCHPAD_WBUF, |
(uintptr_t) THREAD->arch.uspace_window_buffer); |
int cpuid = asi_u64_read(ASI_SCRATCHPAD, SCRATCHPAD_CPUID); |
kstack_wbuf_ptrs[cpuid].kstack = sp; |
kstack_wbuf_ptrs[cpuid].wbuf = |
(uintptr_t) THREAD->arch.uspace_window_buffer; |
} |
} |
|
69,9 → 70,9 |
{ |
if ((THREAD->flags & THREAD_FLAG_USPACE)) { |
/* sample the state of the userspace window buffer */ |
int cpuid = asi_u64_read(ASI_SCRATCHPAD, SCRATCHPAD_CPUID); |
THREAD->arch.uspace_window_buffer = |
(uint8_t *) asi_u64_read(ASI_SCRATCHPAD, SCRATCHPAD_WBUF); |
|
(uint8_t *) kstack_wbuf_ptrs[cpuid].wbuf; |
} |
} |
|