[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Lost] [Patch] kernel2: get_tick_count



On Sat, Sep 13 15:42, Kevin Wolf wrote:
> + kernel2: Syscall get_tick_count
> Index: trunk/src/kernel2/src/syscall.c
> ===================================================================
> --- trunk.orig/src/kernel2/src/syscall.c
> +++ trunk/src/kernel2/src/syscall.c
> @@ -79,6 +79,7 @@ void syscall_init()
>          syscall_add_interrupt_handler, 1);
>  
>      syscall_register(SYSCALL_PUTSN, (void*) &syscall_putsn, 2);
> +    syscall_register(SYSCALL_GET_TICK_COUNT, syscall_get_tick_count, 0);

Hier sollten wir uns vielleicht mal einigen ob wir nun ein &
hinschreiben wollen oder nicht. ;-)

>  }
>  
>  /**
> Index: trunk/src/kernel2/src/arch/i386/syscall.c
> ===================================================================
> --- trunk.orig/src/kernel2/src/arch/i386/syscall.c
> +++ trunk/src/kernel2/src/arch/i386/syscall.c
> @@ -88,23 +88,27 @@ void syscall_arch(machine_state_t* isf)
>          syscall_fastrpc_ret();
>  
>      } else {
> -        dword result;
> +        uint32_t eax, edx;
>          dword stack_backup;
>  
>           // Die Syscallhandler werden mit dem Userspace-Stack aufgerufen, damit
>          // keine Parameter kopiert werden muessen.
>          asm("pusha;"
>              // Den original-Stackpointer retten
> -            "movl %%esp, %2;"
> +            "movl %%esp, %3;"
>              // Stack wechseln
> -            "movl %1, %%esp;"
> -            "call *%3;"
> -            "movl %%eax, %0;"
>              "movl %2, %%esp;"
> +            "call *%4;"
> +            "movl %%eax, %0;"
> +            "movl %%edx, %1;"
> +            "movl %3, %%esp;"
>              "popa;"
> -            : "=m" (result) : "r" (stack), "m" (stack_backup), "r" (handler));
> +            : "=m" (eax), "=m" (edx) : "r" (stack), "m" (stack_backup), "r" (handler));
>  
> -        isf->eax = result;
> +        isf->eax = eax;
> +        if (handler == syscall_get_tick_count) {
> +            isf->edx = edx;
> +        }
>      }
>  }

Das ist ja mal nicht wirklich schön, aber daran bin ich wohl selbst
schuld...

Immer schön rein damit. ;-)

-- 
Antoine Kaufmann
<toni@xxxxxxxxxxxxxxxx>

Attachment: pgpSFPrrj4vnt.pgp
Description: PGP signature