root/arch/xtensa/variants/test_mmuhifi_c3/include/variant/tie-asm.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * This header file contains assembly-language definitions (assembly
   3  * macros, etc.) for this specific Xtensa processor's TIE extensions
   4  * and options.  It is customized to this Xtensa processor configuration.
   5  *
   6  * This file is subject to the terms and conditions of version 2.1 of the GNU
   7  * Lesser General Public License as published by the Free Software Foundation.
   8  *
   9  * Copyright (C) 1999-2009 Tensilica Inc.
  10  */
  11 
  12 #ifndef _XTENSA_CORE_TIE_ASM_H
  13 #define _XTENSA_CORE_TIE_ASM_H
  14 
  15 /*  Selection parameter values for save-area save/restore macros:  */
  16 /*  Option vs. TIE:  */
  17 #define XTHAL_SAS_TIE   0x0001  /* custom extension or coprocessor */
  18 #define XTHAL_SAS_OPT   0x0002  /* optional (and not a coprocessor) */
  19 /*  Whether used automatically by compiler:  */
  20 #define XTHAL_SAS_NOCC  0x0004  /* not used by compiler w/o special opts/code */
  21 #define XTHAL_SAS_CC    0x0008  /* used by compiler without special opts/code */
  22 /*  ABI handling across function calls:  */
  23 #define XTHAL_SAS_CALR  0x0010  /* caller-saved */
  24 #define XTHAL_SAS_CALE  0x0020  /* callee-saved */
  25 #define XTHAL_SAS_GLOB  0x0040  /* global across function calls (in thread) */
  26 /*  Misc  */
  27 #define XTHAL_SAS_ALL   0xFFFF  /* include all default NCP contents */
  28 
  29 
  30 
  31 /* Macro to save all non-coprocessor (extra) custom TIE and optional state
  32  * (not including zero-overhead loop registers).
  33  * Save area ptr (clobbered):  ptr  (8 byte aligned)
  34  * Scratch regs  (clobbered):  at1..at4  (only first XCHAL_NCP_NUM_ATMPS needed)
  35  */
  36         .macro xchal_ncp_store  ptr at1 at2 at3 at4  continue=0 ofs=-1 select=XTHAL_SAS_ALL
  37         xchal_sa_start  \continue, \ofs
  38         .ifeq (XTHAL_SAS_OPT | XTHAL_SAS_NOCC | XTHAL_SAS_CALR) & ~\select
  39         xchal_sa_align  \ptr, 0, 1024-4, 4, 4
  40         rsr     \at1, BR                // boolean option
  41         s32i    \at1, \ptr, .Lxchal_ofs_ + 0
  42         .set    .Lxchal_ofs_, .Lxchal_ofs_ + 4
  43         .endif
  44         .ifeq (XTHAL_SAS_OPT | XTHAL_SAS_NOCC | XTHAL_SAS_CALR) & ~\select
  45         xchal_sa_align  \ptr, 0, 1024-4, 4, 4
  46         rsr     \at1, SCOMPARE1         // conditional store option
  47         s32i    \at1, \ptr, .Lxchal_ofs_ + 0
  48         .set    .Lxchal_ofs_, .Lxchal_ofs_ + 4
  49         .endif
  50         .ifeq (XTHAL_SAS_OPT | XTHAL_SAS_CC | XTHAL_SAS_GLOB) & ~\select
  51         xchal_sa_align  \ptr, 0, 1024-4, 4, 4
  52         rur     \at1, THREADPTR         // threadptr option
  53         s32i    \at1, \ptr, .Lxchal_ofs_ + 0
  54         .set    .Lxchal_ofs_, .Lxchal_ofs_ + 4
  55         .endif
  56         .endm   // xchal_ncp_store
  57 
  58 /* Macro to save all non-coprocessor (extra) custom TIE and optional state
  59  * (not including zero-overhead loop registers).
  60  * Save area ptr (clobbered):  ptr  (8 byte aligned)
  61  * Scratch regs  (clobbered):  at1..at4  (only first XCHAL_NCP_NUM_ATMPS needed)
  62  */
  63         .macro xchal_ncp_load  ptr at1 at2 at3 at4  continue=0 ofs=-1 select=XTHAL_SAS_ALL
  64         xchal_sa_start  \continue, \ofs
  65         .ifeq (XTHAL_SAS_OPT | XTHAL_SAS_NOCC | XTHAL_SAS_CALR) & ~\select
  66         xchal_sa_align  \ptr, 0, 1024-4, 4, 4
  67         l32i    \at1, \ptr, .Lxchal_ofs_ + 0
  68         wsr     \at1, BR                // boolean option
  69         .set    .Lxchal_ofs_, .Lxchal_ofs_ + 4
  70         .endif
  71         .ifeq (XTHAL_SAS_OPT | XTHAL_SAS_NOCC | XTHAL_SAS_CALR) & ~\select
  72         xchal_sa_align  \ptr, 0, 1024-4, 4, 4
  73         l32i    \at1, \ptr, .Lxchal_ofs_ + 0
  74         wsr     \at1, SCOMPARE1         // conditional store option
  75         .set    .Lxchal_ofs_, .Lxchal_ofs_ + 4
  76         .endif
  77         .ifeq (XTHAL_SAS_OPT | XTHAL_SAS_CC | XTHAL_SAS_GLOB) & ~\select
  78         xchal_sa_align  \ptr, 0, 1024-4, 4, 4
  79         l32i    \at1, \ptr, .Lxchal_ofs_ + 0
  80         wur     \at1, THREADPTR         // threadptr option
  81         .set    .Lxchal_ofs_, .Lxchal_ofs_ + 4
  82         .endif
  83         .endm   // xchal_ncp_load
  84 
  85 
  86 
  87 #define XCHAL_NCP_NUM_ATMPS     1
  88 
  89 
  90 
  91 /* Macro to save the state of TIE coprocessor AudioEngineLX.
  92  * Save area ptr (clobbered):  ptr  (8 byte aligned)
  93  * Scratch regs  (clobbered):  at1..at4  (only first XCHAL_CP1_NUM_ATMPS needed)
  94  */
  95 #define xchal_cp_AudioEngineLX_store    xchal_cp1_store
  96 /* #define xchal_cp_AudioEngineLX_store_a2      xchal_cp1_store a2 a3 a4 a5 a6 */
  97         .macro  xchal_cp1_store  ptr at1 at2 at3 at4  continue=0 ofs=-1 select=XTHAL_SAS_ALL
  98         xchal_sa_start \continue, \ofs
  99         .ifeq (XTHAL_SAS_TIE | XTHAL_SAS_NOCC | XTHAL_SAS_CALR) & ~\select
 100         xchal_sa_align  \ptr, 0, 0, 1, 8
 101         rur240  \at1            // AE_OVF_SAR
 102         s32i    \at1, \ptr, 0
 103         rur241  \at1            // AE_BITHEAD
 104         s32i    \at1, \ptr, 4
 105         rur242  \at1            // AE_TS_FTS_BU_BP
 106         s32i    \at1, \ptr, 8
 107         rur243  \at1            // AE_SD_NO
 108         s32i    \at1, \ptr, 12
 109         AE_SP24X2S.I aep0, \ptr,  16
 110         AE_SP24X2S.I aep1, \ptr,  24
 111         AE_SP24X2S.I aep2, \ptr,  32
 112         AE_SP24X2S.I aep3, \ptr,  40
 113         AE_SP24X2S.I aep4, \ptr,  48
 114         AE_SP24X2S.I aep5, \ptr,  56
 115         addi    \ptr, \ptr, 64
 116         AE_SP24X2S.I aep6, \ptr,  0
 117         AE_SP24X2S.I aep7, \ptr,  8
 118         AE_SQ56S.I aeq0, \ptr,  16
 119         AE_SQ56S.I aeq1, \ptr,  24
 120         AE_SQ56S.I aeq2, \ptr,  32
 121         AE_SQ56S.I aeq3, \ptr,  40
 122         .set    .Lxchal_pofs_, .Lxchal_pofs_ + 64
 123         .set    .Lxchal_ofs_, .Lxchal_ofs_ + 112
 124         .endif
 125         .endm   // xchal_cp1_store
 126 
 127 /* Macro to restore the state of TIE coprocessor AudioEngineLX.
 128  * Save area ptr (clobbered):  ptr  (8 byte aligned)
 129  * Scratch regs  (clobbered):  at1..at4  (only first XCHAL_CP1_NUM_ATMPS needed)
 130  */
 131 #define xchal_cp_AudioEngineLX_load     xchal_cp1_load
 132 /* #define xchal_cp_AudioEngineLX_load_a2       xchal_cp1_load a2 a3 a4 a5 a6 */
 133         .macro  xchal_cp1_load  ptr at1 at2 at3 at4  continue=0 ofs=-1 select=XTHAL_SAS_ALL
 134         xchal_sa_start \continue, \ofs
 135         .ifeq (XTHAL_SAS_TIE | XTHAL_SAS_NOCC | XTHAL_SAS_CALR) & ~\select
 136         xchal_sa_align  \ptr, 0, 0, 1, 8
 137         l32i    \at1, \ptr, 0
 138         wur240  \at1            // AE_OVF_SAR
 139         l32i    \at1, \ptr, 4
 140         wur241  \at1            // AE_BITHEAD
 141         l32i    \at1, \ptr, 8
 142         wur242  \at1            // AE_TS_FTS_BU_BP
 143         l32i    \at1, \ptr, 12
 144         wur243  \at1            // AE_SD_NO
 145         addi    \ptr, \ptr, 80
 146         AE_LQ56.I aeq0, \ptr,  0
 147         AE_LQ56.I aeq1, \ptr,  8
 148         AE_LQ56.I aeq2, \ptr,  16
 149         AE_LQ56.I aeq3, \ptr,  24
 150         AE_LP24X2.I aep0, \ptr,  -64
 151         AE_LP24X2.I aep1, \ptr,  -56
 152         AE_LP24X2.I aep2, \ptr,  -48
 153         AE_LP24X2.I aep3, \ptr,  -40
 154         AE_LP24X2.I aep4, \ptr,  -32
 155         AE_LP24X2.I aep5, \ptr,  -24
 156         AE_LP24X2.I aep6, \ptr,  -16
 157         AE_LP24X2.I aep7, \ptr,  -8
 158         .set    .Lxchal_pofs_, .Lxchal_pofs_ + 80
 159         .set    .Lxchal_ofs_, .Lxchal_ofs_ + 112
 160         .endif
 161         .endm   // xchal_cp1_load
 162 
 163 #define XCHAL_CP1_NUM_ATMPS     1
 164 #define XCHAL_SA_NUM_ATMPS      1
 165 
 166         /*  Empty macros for unconfigured coprocessors:  */
 167         .macro xchal_cp0_store  p a b c d continue=0 ofs=-1 select=-1 ; .endm
 168         .macro xchal_cp0_load   p a b c d continue=0 ofs=-1 select=-1 ; .endm
 169         .macro xchal_cp2_store  p a b c d continue=0 ofs=-1 select=-1 ; .endm
 170         .macro xchal_cp2_load   p a b c d continue=0 ofs=-1 select=-1 ; .endm
 171         .macro xchal_cp3_store  p a b c d continue=0 ofs=-1 select=-1 ; .endm
 172         .macro xchal_cp3_load   p a b c d continue=0 ofs=-1 select=-1 ; .endm
 173         .macro xchal_cp4_store  p a b c d continue=0 ofs=-1 select=-1 ; .endm
 174         .macro xchal_cp4_load   p a b c d continue=0 ofs=-1 select=-1 ; .endm
 175         .macro xchal_cp5_store  p a b c d continue=0 ofs=-1 select=-1 ; .endm
 176         .macro xchal_cp5_load   p a b c d continue=0 ofs=-1 select=-1 ; .endm
 177         .macro xchal_cp6_store  p a b c d continue=0 ofs=-1 select=-1 ; .endm
 178         .macro xchal_cp6_load   p a b c d continue=0 ofs=-1 select=-1 ; .endm
 179         .macro xchal_cp7_store  p a b c d continue=0 ofs=-1 select=-1 ; .endm
 180         .macro xchal_cp7_load   p a b c d continue=0 ofs=-1 select=-1 ; .endm
 181 
 182 #endif /*_XTENSA_CORE_TIE_ASM_H*/

/* [<][>][^][v][top][bottom][index][help] */