Changeset 0f250f9 in mainline for arch/ia64/src


Ignore:
Timestamp:
2006-03-17T18:07:56Z (20 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
69f293e
Parents:
6c6a19e6
Message:

Improved uspace threads.
ia64 needs fixing.

Location:
arch/ia64/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • arch/ia64/src/asm.S

    r6c6a19e6 r0f250f9  
    5555 * @param in1 Userspace stack pointer address.
    5656 * @param in2 Userspace register stack pointer address.
    57  * @param in3 Value to be stored in IPSR.
    58  * @param in4 Value to be stored in RSC.
     57 * @param in3 Userspace address of thread uspace_arg_t structure.
     58 * @param in4 Value to be stored in IPSR.
     59 * @param in5 Value to be stored in RSC.
    5960 */
    6061.global switch_to_userspace
    6162switch_to_userspace:
    62         alloc loc0 = ar.pfs, 5, 3, 0, 0
     63        alloc loc0 = ar.pfs, 6, 3, 0, 0
    6364        rsm (PSR_IC_MASK | PSR_I_MASK)          /* disable interruption collection and interrupts */
    6465        srlz.d ;;
    6566        srlz.i ;;
    6667       
    67         mov cr.ipsr = in3
     68        mov cr.ipsr = in4
    6869        mov cr.iip = in0
    6970        mov r12 = in1
     
    8586       
    8687        mov ar.bspstore = in2 ;;
    87         mov ar.rsc = in4 ;;
     88        mov ar.rsc = in5 ;;
     89       
     90        mov r8 = in3
    8891       
    8992        rfi ;;
  • arch/ia64/src/ia64.c

    r6c6a19e6 r0f250f9  
    4242#include <userspace.h>
    4343#include <console/console.h>
    44 #include <proc/thread.h>
     44#include <proc/uarg.h>
    4545
    4646void arch_pre_mm_init(void)
     
    7474
    7575/** Enter userspace and never return. */
    76 void userspace(uspace_arg_t *uarg)
     76void userspace(uspace_arg_t *kernel_uarg)
    7777{
    7878        psr_t psr;
     
    9292        rsc.mode = 3;                           /* eager mode */
    9393
    94         switch_to_userspace(uarg->uspace_entry, uarg->uspace_stack+PAGE_SIZE-ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT), uarg->uspace_stack, psr.value, rsc.value);
     94        switch_to_userspace((__address) kernel_uarg->uspace_entry,
     95                            ((__address) kernel_uarg->uspace_stack)+PAGE_SIZE-ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT),
     96                            (__address) kernel_uarg->uspace_stack,
     97                            (__address) kernel_uarg->uspace_uarg,
     98                            psr.value, rsc.value);
    9599
    96100        while (1) {
Note: See TracChangeset for help on using the changeset viewer.