!C99Shell v. 1.0 pre-release build #13!

Software: Apache/2.0.54 (Unix) mod_perl/1.99_09 Perl/v5.8.0 mod_ssl/2.0.54 OpenSSL/0.9.7l DAV/2 FrontPage/5.0.2.2635 PHP/4.4.0 mod_gzip/2.0.26.1a 

uname -a: Linux snow.he.net 4.4.276-v2-mono-1 #1 SMP Wed Jul 21 11:21:17 PDT 2021 i686 

uid=99(nobody) gid=98(nobody) groups=98(nobody) 

Safe-mode: OFF (not secure)

/usr/src/linux-2.4.18-xfs-1.1/arch/s390/kernel/   drwxr-xr-x
Free 318.37 GB of 458.09 GB (69.5%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     s390fpu.c (3.3 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/*
 *  arch/s390/kernel/s390fpu.c
 *
 *  S390 version
 *    Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
 *    Author(s): Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
 *
 *  s390fpu.h functions for saving & restoring the fpu state.
 *
 *  I couldn't inline these as linux/sched.h included half the world
 *  & was required to at the task structure.
 *  & the functions were too complex to make macros from.
 *  ( & as usual I didn't feel like debugging inline code ).
 */

#include <linux/config.h>
#include <linux/sched.h>

int save_fp_regs1(s390_fp_regs *fpregs)
{
    int has_ieee=MACHINE_HAS_IEEE;
/*
  I don't think we can use STE here as this would load
  fp registers 0 & 2 into memory locations 0 & 1 etc. 
 */    
    asm volatile ("STD   0,8(%0)\n\t"
              "STD   2,24(%0)\n\t"
              "STD   4,40(%0)\n\t"
              "STD   6,56(%0)"
                      : 
              : "a" (fpregs)
              : "memory"
        );
    if(has_ieee)
    {
        asm volatile ("STFPC 0(%0)\n\t"
                  "STD   1,16(%0)\n\t"
                  "STD   3,32(%0)\n\t"
                  "STD   5,48(%0)\n\t"
                  "STD   7,64(%0)\n\t"
                  "STD   8,72(%0)\n\t"
                  "STD   9,80(%0)\n\t"
                  "STD   10,88(%0)\n\t"
                  "STD   11,96(%0)\n\t"
                  "STD   12,104(%0)\n\t"
                  "STD   13,112(%0)\n\t"
                  "STD   14,120(%0)\n\t"
                  "STD   15,128(%0)\n\t"
                  : 
                  : "a" (fpregs)
                  : "memory"
            );
    }
    return(has_ieee);
}


void save_fp_regs(s390_fp_regs *fpregs)
{
#if CONFIG_MATHEMU
    s390_fp_regs *currentfprs;

    if(!save_fp_regs1(fpregs))
    {
        currentfprs=&current->thread.fp_regs;
        fpregs->fpc=currentfprs->fpc;
        fpregs->fprs[1].d=currentfprs->fprs[1].d;
        fpregs->fprs[3].d=currentfprs->fprs[3].d;
        fpregs->fprs[5].d=currentfprs->fprs[5].d;
        fpregs->fprs[7].d=currentfprs->fprs[7].d;
        memcpy(&fpregs->fprs[8].d,&currentfprs->fprs[8].d,sizeof(freg_t)*8);
    }
#else
    save_fp_regs1(fpregs);
#endif
}


int restore_fp_regs1(s390_fp_regs *fpregs)
{
    int has_ieee=MACHINE_HAS_IEEE;

    /* If we don't mask with the FPC_VALID_MASK here
     * we've got a very quick shutdown -h now command
         * via a kernel specification exception.
     */
    fpregs->fpc&=FPC_VALID_MASK;
    asm volatile ("LD   0,8(%0)\n\t"
              "LD   2,24(%0)\n\t"
              "LD   4,40(%0)\n\t"
              "LD   6,56(%0)"
                      : 
              : "a" (fpregs)
              : "memory"
        );
    if(has_ieee)
    {
        asm volatile ("LFPC 0(%0)\n\t"
                  "LD   1,16(%0)\n\t"
                  "LD   3,32(%0)\n\t"
                  "LD   5,48(%0)\n\t"
                  "LD   7,64(%0)\n\t"
                  "LD   8,72(%0)\n\t"
                  "LD   9,80(%0)\n\t"
                  "LD   10,88(%0)\n\t"
                  "LD   11,96(%0)\n\t"
                  "LD   12,104(%0)\n\t"
                  "LD   13,112(%0)\n\t"
                  "LD   14,120(%0)\n\t"
                  "LD   15,128(%0)\n\t"
                  : 
                  : "a" (fpregs)
                  : "memory"
            );
    }
    return(has_ieee);
}

void restore_fp_regs(s390_fp_regs *fpregs)
{
#if CONFIG_MATHEMU
    s390_fp_regs *currentfprs;

    if(!restore_fp_regs1(fpregs))
    {
        currentfprs=&current->thread.fp_regs;
        currentfprs->fpc=fpregs->fpc;
        currentfprs->fprs[1].d=fpregs->fprs[1].d;
        currentfprs->fprs[3].d=fpregs->fprs[3].d;
        currentfprs->fprs[5].d=fpregs->fprs[5].d;
        currentfprs->fprs[7].d=fpregs->fprs[7].d;
        memcpy(&currentfprs->fprs[8].d,&fpregs->fprs[8].d,sizeof(freg_t)*8);
    }
#else
    restore_fp_regs1(fpregs);
#endif
}


:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.023 ]--