OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [arch/] [sparc/] [kernel/] [sclow.S] - Rev 3

Compare with Previous | Blame | View Log

/* sclow.S: Low level special syscall handling.
 *          Basically these are cases where we can completely
 *          handle the system call without saving any state
 *          because we know that the process will not sleep.
 *
 * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
 */

#include <asm/ptrace.h>
#include <asm/asm-offsets.h>
#include <asm/errno.h>
#include <asm/winmacro.h>
#include <asm/thread_info.h>
#include <asm/psr.h>
#include <asm/page.h>

#define CC_AND_RETT  \
        set     PSR_C, %l4; \
        andn    %l0, %l4, %l4; \
        wr      %l4, 0x0, %psr; \
        nop; nop; nop; \
        jmp     %l2; \
        rett    %l2 + 4;

#define SC_AND_RETT  \
        set     PSR_C, %l4; \
        or      %l0, %l4, %l4; \
        wr      %l4, 0x0, %psr; \
        nop; nop; nop; \
        jmp     %l2; \
        rett    %l2 + 4;

#define LABEL(func)  func##_low

        .globl  LABEL(sunosnop)
LABEL(sunosnop):
        CC_AND_RETT

#if (ASIZ_task_uid == 2 && ASIZ_task_euid == 2)
        .globl  LABEL(sunosgetuid)
LABEL(sunosgetuid):
        LOAD_CURRENT(l4, l5)
        ld      [%l4 + TI_TASK], %l4
        lduh    [%l4 + AOFF_task_uid], %i0
        lduh    [%l4 + AOFF_task_euid], %i1
        CC_AND_RETT
#endif

#if (ASIZ_task_gid == 2 && ASIZ_task_egid == 2)
        .globl  LABEL(sunosgetgid)
LABEL(sunosgetgid):
        LOAD_CURRENT(l4, l5)
        ld      [%l4 + TI_TASK], %l4
        lduh    [%l4 + AOFF_task_gid], %i0
        lduh    [%l4 + AOFF_task_egid], %i1
        CC_AND_RETT
#endif

        .globl  LABEL(sunosmctl)
LABEL(sunosmctl):
        mov     0, %i0
        CC_AND_RETT

        .globl  LABEL(sunosgdtsize)
LABEL(sunosgdtsize):    
        mov     256, %i0
        CC_AND_RETT

        .globl  LABEL(getpagesize)
LABEL(getpagesize):
        set     PAGE_SIZE, %i0
        CC_AND_RETT

        /* XXX sys_nice() XXX */
        /* XXX sys_setpriority() XXX */
        /* XXX sys_getpriority() XXX */
        /* XXX sys_setregid() XXX */
        /* XXX sys_setgid() XXX */
        /* XXX sys_setreuid() XXX */
        /* XXX sys_setuid() XXX */
        /* XXX sys_setfsuid() XXX */
        /* XXX sys_setfsgid() XXX */
        /* XXX sys_setpgid() XXX */
        /* XXX sys_getpgid() XXX */
        /* XXX sys_setsid() XXX */
        /* XXX sys_getsid() XXX */

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.