ShellBanner
System:Linux MiraNet 3.0.0-14-generic-pae #23-Ubuntu SMP Mon Nov 21 22:07:10 UTC 2011 i686
Software:Apache. PHP/5.3.6-13ubuntu3.10
ID:uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
Safe Mode:OFF
Open_Basedir:OFF
Freespace:21.93 GB of 70.42 GB (31.15%)
MySQL: ON MSSQL: OFF Oracle: OFF PostgreSQL: OFF Curl: OFF Sockets: ON Fetch: OFF Wget: ON Perl: ON
Disabled Functions: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,

/ usr/ src/ linux-headers-3.0.0-14/ arch/ frv/ include/ asm/ - drwxr-xr-x

Directory:
Viewing file:     math-emu.h (6.34 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#ifndef _ASM_MATH_EMU_H
#define _ASM_MATH_EMU_H

#include <asm/setup.h>
#include <linux/linkage.h>

/* Status Register bits */

/* accrued exception bits */
#define FPSR_AEXC_INEX    3
#define FPSR_AEXC_DZ    4
#define FPSR_AEXC_UNFL    5
#define FPSR_AEXC_OVFL    6
#define FPSR_AEXC_IOP    7

/* exception status bits */
#define FPSR_EXC_INEX1    8
#define FPSR_EXC_INEX2    9
#define FPSR_EXC_DZ    10
#define FPSR_EXC_UNFL    11
#define FPSR_EXC_OVFL    12
#define FPSR_EXC_OPERR    13
#define FPSR_EXC_SNAN    14
#define FPSR_EXC_BSUN    15

/* quotient byte, assumes big-endian, of course */
#define FPSR_QUOTIENT(fpsr) (*((signed char *) &(fpsr) + 1))

/* condition code bits */
#define FPSR_CC_NAN    24
#define FPSR_CC_INF    25
#define FPSR_CC_Z    26
#define FPSR_CC_NEG    27


/* Control register bits */

/* rounding mode */
#define    FPCR_ROUND_RN    0        /* round to nearest/even */
#define FPCR_ROUND_RZ    1        /* round to zero */
#define FPCR_ROUND_RM    2        /* minus infinity */
#define FPCR_ROUND_RP    3        /* plus infinity */

/* rounding precision */
#define FPCR_PRECISION_X    0    /* long double */
#define FPCR_PRECISION_S    1    /* double */
#define FPCR_PRECISION_D    2    /* float */


/* Flags to select the debugging output */
#define PDECODE        0
#define PEXECUTE    1
#define PCONV        2
#define PNORM        3
#define PREGISTER    4
#define PINSTR        5
#define PUNIMPL        6
#define PMOVEM        7

#define PMDECODE    (1<<PDECODE)
#define PMEXECUTE    (1<<PEXECUTE)
#define PMCONV        (1<<PCONV)
#define PMNORM        (1<<PNORM)
#define PMREGISTER    (1<<PREGISTER)
#define PMINSTR        (1<<PINSTR)
#define PMUNIMPL    (1<<PUNIMPL)
#define PMMOVEM        (1<<PMOVEM)

#ifndef __ASSEMBLY__

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

union fp_mant64 {
    unsigned long long m64;
    unsigned long m32[2];
};

union fp_mant128 {
    unsigned long long m64[2];
    unsigned long m32[4];
};

/* internal representation of extended fp numbers */
struct fp_ext {
    unsigned char lowmant;
    unsigned char sign;
    unsigned short exp;
    union fp_mant64 mant;
};

/* C representation of FPU registers */
/* NOTE: if you change this, you have to change the assembler offsets
   below and the size in <asm/fpu.h>, too */
struct fp_data {
    struct fp_ext fpreg[8];
    unsigned int fpcr;
    unsigned int fpsr;
    unsigned int fpiar;
    unsigned short prec;
    unsigned short rnd;
    struct fp_ext temp[2];
};

#if FPU_EMU_DEBUG
extern unsigned int fp_debugprint;

#define dprint(bit, fmt, args...) ({            \
    if (fp_debugprint & (1 << (bit)))        \
        printk(fmt, ## args);            \
})
#else
#define dprint(bit, fmt, args...)
#endif

#define uprint(str) ({                    \
    static int __count = 3;                \
                            \
    if (__count > 0) {                \
        printk("You just hit an unimplemented "    \
               "fpu instruction (%s)\n", str);    \
        printk("Please report this to ....\n");    \
        __count--;                \
    }                        \
})

#define FPDATA        ((struct fp_data *)current->thread.fp)

#else    /* __ASSEMBLY__ */

#define FPDATA        %a2

/* offsets from the base register to the floating point data in the task struct */
#define FPD_FPREG    (TASK_THREAD+THREAD_FPREG+0)
#define FPD_FPCR    (TASK_THREAD+THREAD_FPREG+96)
#define FPD_FPSR    (TASK_THREAD+THREAD_FPREG+100)
#define FPD_FPIAR    (TASK_THREAD+THREAD_FPREG+104)
#define FPD_PREC    (TASK_THREAD+THREAD_FPREG+108)
#define FPD_RND        (TASK_THREAD+THREAD_FPREG+110)
#define FPD_TEMPFP1    (TASK_THREAD+THREAD_FPREG+112)
#define FPD_TEMPFP2    (TASK_THREAD+THREAD_FPREG+124)
#define FPD_SIZEOF    (TASK_THREAD+THREAD_FPREG+136)

/* offsets on the stack to access saved registers,
 * these are only used during instruction decoding
 * where we always know how deep we're on the stack.
 */
#define FPS_DO        (PT_D0)
#define FPS_D1        (PT_D1)
#define FPS_D2        (PT_D2)
#define FPS_A0        (PT_A0)
#define FPS_A1        (PT_A1)
#define FPS_A2        (PT_A2)
#define FPS_SR        (PT_SR)
#define FPS_PC        (PT_PC)
#define FPS_EA        (PT_PC+6)
#define FPS_PC2        (PT_PC+10)

.macro    fp_get_fp_reg
    lea    (FPD_FPREG,FPDATA,%d0.w*4),%a0
    lea    (%a0,%d0.w*8),%a0
.endm

/* Macros used to get/put the current program counter.
 * 020/030 use a different stack frame then 040/060, for the
 * 040/060 the return pc points already to the next location,
 * so this only needs to be modified for jump instructions.
 */
.macro    fp_get_pc dest
    move.l    (FPS_PC+4,%sp),\dest
.endm

.macro    fp_put_pc src,jump=0
    move.l    \src,(FPS_PC+4,%sp)
.endm

.macro    fp_get_instr_data    f,s,dest,label
    getuser    \f,%sp@(FPS_PC+4)@(0),\dest,\label,%sp@(FPS_PC+4)
    addq.l    #\s,%sp@(FPS_PC+4)
.endm

.macro    fp_get_instr_word    dest,label,addr
    fp_get_instr_data    w,2,\dest,\label,\addr
.endm

.macro    fp_get_instr_long    dest,label,addr
    fp_get_instr_data    l,4,\dest,\label,\addr
.endm

/* These macros are used to read from/write to user space
 * on error we jump to the fixup section, load the fault
 * address into %a0 and jump to the exit.
 * (derived from <asm/uaccess.h>)
 */
.macro    getuser    size,src,dest,label,addr
|    printf    ,"[\size<%08x]",1,\addr
.Lu1\@:    moves\size    \src,\dest

    .section .fixup,"ax"
    .even
.Lu2\@:    move.l    \addr,%a0
    jra    \label
    .previous

    .section __ex_table,"a"
    .align    4
    .long    .Lu1\@,.Lu2\@
    .previous
.endm

.macro    putuser    size,src,dest,label,addr
|    printf    ,"[\size>%08x]",1,\addr
.Lu1\@:    moves\size    \src,\dest
.Lu2\@:

    .section .fixup,"ax"
    .even
.Lu3\@:    move.l    \addr,%a0
    jra    \label
    .previous

    .section __ex_table,"a"
    .align    4
    .long    .Lu1\@,.Lu3\@
    .long    .Lu2\@,.Lu3\@
    .previous
.endm


.macro    movestack    nr,arg1,arg2,arg3,arg4,arg5
    .if    \nr
    movestack    (\nr-1),\arg2,\arg3,\arg4,\arg5
    move.l    \arg1,-(%sp)
    .endif
.endm

.macro    printf    bit=-1,string,nr=0,arg1,arg2,arg3,arg4,arg5
#ifdef FPU_EMU_DEBUG
    .data
.Lpdata\@:
    .string    "\string"
    .previous

    movem.l    %d0/%d1/%a0/%a1,-(%sp)
    .if    \bit+1
#if 0
    moveq    #\bit,%d0
    andw    #7,%d0
    btst    %d0,fp_debugprint+((31-\bit)/8)
#else
    btst    #\bit,fp_debugprint+((31-\bit)/8)
#endif
    jeq    .Lpskip\@
    .endif
    movestack    \nr,\arg1,\arg2,\arg3,\arg4,\arg5
    pea    .Lpdata\@
    jsr    printk
    lea    ((\nr+1)*4,%sp),%sp
.Lpskip\@:
    movem.l    (%sp)+,%d0/%d1/%a0/%a1
#endif
.endm

.macro    printx    bit,fp
#ifdef FPU_EMU_DEBUG
    movem.l    %d0/%a0,-(%sp)
    lea    \fp,%a0
#if 0
    moveq    #'+',%d0
    tst.w    (%a0)
    jeq    .Lx1\@
    moveq    #'-',%d0
.Lx1\@:    printf    \bit," %c",1,%d0
    move.l    (4,%a0),%d0
    bclr    #31,%d0
    jne    .Lx2\@
    printf    \bit,"0."
    jra    .Lx3\@
.Lx2\@:    printf    \bit,"1."
.Lx3\@:    printf    \bit,"%08x%08x",2,%d0,%a0@(8)
    move.w    (2,%a0),%d0
    ext.l    %d0
    printf    \bit,"E%04x",1,%d0
#else
    printf    \bit," %08x%08x%08x",3,%a0@,%a0@(4),%a0@(8)
#endif
    movem.l    (%sp)+,%d0/%a0
#endif
.endm

.macro    debug    instr,args
#ifdef FPU_EMU_DEBUG
    \instr    \args
#endif
.endm


#endif    /* __ASSEMBLY__ */

#endif    /* _ASM_FRV_MATH_EMU_H */

Command:
Quick Commands:
Upload:
[Read-Only] Max size: 100MB
PHP Filesystem: <@ Ú
Search File:
regexp
Create File:
Overwrite [Read-Only]
View File:
Mass Defacement:
[+] Main Directory: [+] Defacement Url:
LmfaoX Shell - Private Build [BETA] - v0.1 -; Generated: 0.39 seconds