1eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner/* 2eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * This header file contains assembly-language definitions (assembly 3eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * macros, etc.) for this specific Xtensa processor's TIE extensions 4eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * and options. It is customized to this Xtensa processor configuration. 5eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * 6eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * This file is subject to the terms and conditions of the GNU General Public 7eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * License. See the file "COPYING" in the main directory of this archive 8eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * for more details. 9eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * 10eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * Copyright (C) 1999-2008 Tensilica Inc. 11eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner */ 12eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 13eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#ifndef _XTENSA_CORE_TIE_ASM_H 14eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define _XTENSA_CORE_TIE_ASM_H 15eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 16eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner/* Selection parameter values for save-area save/restore macros: */ 17eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner/* Option vs. TIE: */ 18eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define XTHAL_SAS_TIE 0x0001 /* custom extension or coprocessor */ 19eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define XTHAL_SAS_OPT 0x0002 /* optional (and not a coprocessor) */ 20eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner/* Whether used automatically by compiler: */ 21eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define XTHAL_SAS_NOCC 0x0004 /* not used by compiler w/o special opts/code */ 22eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define XTHAL_SAS_CC 0x0008 /* used by compiler without special opts/code */ 23eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner/* ABI handling across function calls: */ 24eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define XTHAL_SAS_CALR 0x0010 /* caller-saved */ 25eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define XTHAL_SAS_CALE 0x0020 /* callee-saved */ 26eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define XTHAL_SAS_GLOB 0x0040 /* global across function calls (in thread) */ 27eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner/* Misc */ 28eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define XTHAL_SAS_ALL 0xFFFF /* include all default NCP contents */ 29eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 30eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 31eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 32eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner/* Macro to save all non-coprocessor (extra) custom TIE and optional state 33eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * (not including zero-overhead loop registers). 34eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * Save area ptr (clobbered): ptr (16 byte aligned) 35eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * Scratch regs (clobbered): at1..at4 (only first XCHAL_NCP_NUM_ATMPS needed) 36eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner */ 37eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_ncp_store ptr at1 at2 at3 at4 continue=0 ofs=-1 select=XTHAL_SAS_ALL 38eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner xchal_sa_start \continue, \ofs 39eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .ifeq (XTHAL_SAS_OPT | XTHAL_SAS_NOCC | XTHAL_SAS_CALR) & ~\select 40eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner xchal_sa_align \ptr, 0, 1024-4, 4, 4 41eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rsr \at1, BR // boolean option 42eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, .Lxchal_ofs_ + 0 43eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .set .Lxchal_ofs_, .Lxchal_ofs_ + 4 44eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .endif 45eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .endm // xchal_ncp_store 46eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 47eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner/* Macro to save all non-coprocessor (extra) custom TIE and optional state 48eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * (not including zero-overhead loop registers). 49eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * Save area ptr (clobbered): ptr (16 byte aligned) 50eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * Scratch regs (clobbered): at1..at4 (only first XCHAL_NCP_NUM_ATMPS needed) 51eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner */ 52eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_ncp_load ptr at1 at2 at3 at4 continue=0 ofs=-1 select=XTHAL_SAS_ALL 53eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner xchal_sa_start \continue, \ofs 54eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .ifeq (XTHAL_SAS_OPT | XTHAL_SAS_NOCC | XTHAL_SAS_CALR) & ~\select 55eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner xchal_sa_align \ptr, 0, 1024-4, 4, 4 56eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, .Lxchal_ofs_ + 0 57eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wsr \at1, BR // boolean option 58eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .set .Lxchal_ofs_, .Lxchal_ofs_ + 4 59eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .endif 60eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .endm // xchal_ncp_load 61eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 62eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 63eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 64eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define XCHAL_NCP_NUM_ATMPS 1 65eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 66eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 67eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 68eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner/* Macro to save the state of TIE coprocessor FPU. 69eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * Save area ptr (clobbered): ptr (16 byte aligned) 70eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * Scratch regs (clobbered): at1..at4 (only first XCHAL_CP0_NUM_ATMPS needed) 71eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner */ 72eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define xchal_cp_FPU_store xchal_cp0_store 73eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner/* #define xchal_cp_FPU_store_a2 xchal_cp0_store a2 a3 a4 a5 a6 */ 74eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_cp0_store ptr at1 at2 at3 at4 continue=0 ofs=-1 select=XTHAL_SAS_ALL 75eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner xchal_sa_start \continue, \ofs 76eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .ifeq (XTHAL_SAS_TIE | XTHAL_SAS_NOCC | XTHAL_SAS_CALR) & ~\select 77eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner xchal_sa_align \ptr, 0, 0, 1, 16 78eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rur232 \at1 // FCR 79eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, 0 80eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rur233 \at1 // FSR 81eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, 4 82eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner SSI f0, \ptr, 8 83eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner SSI f1, \ptr, 12 84eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner SSI f2, \ptr, 16 85eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner SSI f3, \ptr, 20 86eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner SSI f4, \ptr, 24 87eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner SSI f5, \ptr, 28 88eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner SSI f6, \ptr, 32 89eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner SSI f7, \ptr, 36 90eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner SSI f8, \ptr, 40 91eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner SSI f9, \ptr, 44 92eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner SSI f10, \ptr, 48 93eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner SSI f11, \ptr, 52 94eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner SSI f12, \ptr, 56 95eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner SSI f13, \ptr, 60 96eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner SSI f14, \ptr, 64 97eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner SSI f15, \ptr, 68 98eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .set .Lxchal_ofs_, .Lxchal_ofs_ + 72 99eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .endif 100eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .endm // xchal_cp0_store 101eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 102eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner/* Macro to restore the state of TIE coprocessor FPU. 103eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * Save area ptr (clobbered): ptr (16 byte aligned) 104eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * Scratch regs (clobbered): at1..at4 (only first XCHAL_CP0_NUM_ATMPS needed) 105eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner */ 106eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define xchal_cp_FPU_load xchal_cp0_load 107eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner/* #define xchal_cp_FPU_load_a2 xchal_cp0_load a2 a3 a4 a5 a6 */ 108eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_cp0_load ptr at1 at2 at3 at4 continue=0 ofs=-1 select=XTHAL_SAS_ALL 109eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner xchal_sa_start \continue, \ofs 110eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .ifeq (XTHAL_SAS_TIE | XTHAL_SAS_NOCC | XTHAL_SAS_CALR) & ~\select 111eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner xchal_sa_align \ptr, 0, 0, 1, 16 112eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, 0 113eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wur232 \at1 // FCR 114eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, 4 115eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wur233 \at1 // FSR 116eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner LSI f0, \ptr, 8 117eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner LSI f1, \ptr, 12 118eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner LSI f2, \ptr, 16 119eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner LSI f3, \ptr, 20 120eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner LSI f4, \ptr, 24 121eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner LSI f5, \ptr, 28 122eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner LSI f6, \ptr, 32 123eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner LSI f7, \ptr, 36 124eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner LSI f8, \ptr, 40 125eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner LSI f9, \ptr, 44 126eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner LSI f10, \ptr, 48 127eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner LSI f11, \ptr, 52 128eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner LSI f12, \ptr, 56 129eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner LSI f13, \ptr, 60 130eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner LSI f14, \ptr, 64 131eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner LSI f15, \ptr, 68 132eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .set .Lxchal_ofs_, .Lxchal_ofs_ + 72 133eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .endif 134eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .endm // xchal_cp0_load 135eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 136eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define XCHAL_CP0_NUM_ATMPS 1 137eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 138eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner/* Macro to save the state of TIE coprocessor XAD. 139eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * Save area ptr (clobbered): ptr (16 byte aligned) 140eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * Scratch regs (clobbered): at1..at4 (only first XCHAL_CP6_NUM_ATMPS needed) 141eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner */ 142eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define xchal_cp_XAD_store xchal_cp6_store 143eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner/* #define xchal_cp_XAD_store_a2 xchal_cp6_store a2 a3 a4 a5 a6 */ 144eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_cp6_store ptr at1 at2 at3 at4 continue=0 ofs=-1 select=XTHAL_SAS_ALL 145eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner xchal_sa_start \continue, \ofs 146eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .ifeq (XTHAL_SAS_TIE | XTHAL_SAS_NOCC | XTHAL_SAS_CALR) & ~\select 147eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner xchal_sa_align \ptr, 0, 0, 1, 16 148eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rur0 \at1 // LDCBHI 149eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, 0 150eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rur1 \at1 // LDCBLO 151eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, 4 152eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rur2 \at1 // STCBHI 153eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, 8 154eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rur3 \at1 // STCBLO 155eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, 12 156eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rur8 \at1 // LDBRBASE 157eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, 16 158eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rur9 \at1 // LDBROFF 159eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, 20 160eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rur10 \at1 // LDBRINC 161eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, 24 162eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rur11 \at1 // STBRBASE 163eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, 28 164eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rur12 \at1 // STBROFF 165eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, 32 166eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rur13 \at1 // STBRINC 167eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, 36 168eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rur24 \at1 // SCRATCH0 169eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, 40 170eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rur25 \at1 // SCRATCH1 171eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, 44 172eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rur26 \at1 // SCRATCH2 173eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, 48 174eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner rur27 \at1 // SCRATCH3 175eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner s32i \at1, \ptr, 52 176eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAS128I wra0, \ptr, 64 177eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAS128I wra1, \ptr, 80 178eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAS128I wra2, \ptr, 96 179eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAS128I wra3, \ptr, 112 180eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAS128I wra4, \ptr, 128 181eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAS128I wra5, \ptr, 144 182eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAS128I wra6, \ptr, 160 183eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAS128I wra7, \ptr, 176 184eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAS128I wra8, \ptr, 192 185eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAS128I wra9, \ptr, 208 186eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAS128I wra10, \ptr, 224 187eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAS128I wra11, \ptr, 240 188eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAS128I wra12, \ptr, 256 189eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAS128I wra13, \ptr, 272 190eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAS128I wra14, \ptr, 288 191eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAS128I wra15, \ptr, 304 192eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBS128I wrb0, \ptr, 320 193eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBS128I wrb1, \ptr, 336 194eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBS128I wrb2, \ptr, 352 195eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBS128I wrb3, \ptr, 368 196eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBS128I wrb4, \ptr, 384 197eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBS128I wrb5, \ptr, 400 198eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBS128I wrb6, \ptr, 416 199eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBS128I wrb7, \ptr, 432 200eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBS128I wrb8, \ptr, 448 201eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBS128I wrb9, \ptr, 464 202eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBS128I wrb10, \ptr, 480 203eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBS128I wrb11, \ptr, 496 204eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBS128I wrb12, \ptr, 512 205eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBS128I wrb13, \ptr, 528 206eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBS128I wrb14, \ptr, 544 207eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBS128I wrb15, \ptr, 560 208eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .set .Lxchal_ofs_, .Lxchal_ofs_ + 576 209eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .endif 210eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .endm // xchal_cp6_store 211eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 212eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner/* Macro to restore the state of TIE coprocessor XAD. 213eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * Save area ptr (clobbered): ptr (16 byte aligned) 214eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner * Scratch regs (clobbered): at1..at4 (only first XCHAL_CP6_NUM_ATMPS needed) 215eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner */ 216eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define xchal_cp_XAD_load xchal_cp6_load 217eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner/* #define xchal_cp_XAD_load_a2 xchal_cp6_load a2 a3 a4 a5 a6 */ 218eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_cp6_load ptr at1 at2 at3 at4 continue=0 ofs=-1 select=XTHAL_SAS_ALL 219eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner xchal_sa_start \continue, \ofs 220eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .ifeq (XTHAL_SAS_TIE | XTHAL_SAS_NOCC | XTHAL_SAS_CALR) & ~\select 221eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner xchal_sa_align \ptr, 0, 0, 1, 16 222eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, 0 223eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wur0 \at1 // LDCBHI 224eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, 4 225eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wur1 \at1 // LDCBLO 226eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, 8 227eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wur2 \at1 // STCBHI 228eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, 12 229eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wur3 \at1 // STCBLO 230eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, 16 231eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wur8 \at1 // LDBRBASE 232eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, 20 233eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wur9 \at1 // LDBROFF 234eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, 24 235eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wur10 \at1 // LDBRINC 236eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, 28 237eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wur11 \at1 // STBRBASE 238eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, 32 239eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wur12 \at1 // STBROFF 240eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, 36 241eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wur13 \at1 // STBRINC 242eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, 40 243eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wur24 \at1 // SCRATCH0 244eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, 44 245eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wur25 \at1 // SCRATCH1 246eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, 48 247eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wur26 \at1 // SCRATCH2 248eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner l32i \at1, \ptr, 52 249eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner wur27 \at1 // SCRATCH3 250eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBL128I wrb0, \ptr, 320 251eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBL128I wrb1, \ptr, 336 252eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBL128I wrb2, \ptr, 352 253eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBL128I wrb3, \ptr, 368 254eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBL128I wrb4, \ptr, 384 255eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBL128I wrb5, \ptr, 400 256eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBL128I wrb6, \ptr, 416 257eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBL128I wrb7, \ptr, 432 258eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBL128I wrb8, \ptr, 448 259eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBL128I wrb9, \ptr, 464 260eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBL128I wrb10, \ptr, 480 261eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBL128I wrb11, \ptr, 496 262eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBL128I wrb12, \ptr, 512 263eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBL128I wrb13, \ptr, 528 264eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBL128I wrb14, \ptr, 544 265eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRBL128I wrb15, \ptr, 560 266eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAL128I wra0, \ptr, 64 267eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAL128I wra1, \ptr, 80 268eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAL128I wra2, \ptr, 96 269eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAL128I wra3, \ptr, 112 270eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAL128I wra4, \ptr, 128 271eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAL128I wra5, \ptr, 144 272eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAL128I wra6, \ptr, 160 273eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAL128I wra7, \ptr, 176 274eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAL128I wra8, \ptr, 192 275eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAL128I wra9, \ptr, 208 276eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAL128I wra10, \ptr, 224 277eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAL128I wra11, \ptr, 240 278eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAL128I wra12, \ptr, 256 279eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAL128I wra13, \ptr, 272 280eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAL128I wra14, \ptr, 288 281eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner WRAL128I wra15, \ptr, 304 282eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .set .Lxchal_ofs_, .Lxchal_ofs_ + 576 283eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .endif 284eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .endm // xchal_cp6_load 285eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 286eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define XCHAL_CP6_NUM_ATMPS 1 287eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#define XCHAL_SA_NUM_ATMPS 1 288eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 289eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner /* Empty macros for unconfigured coprocessors: */ 290eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_cp1_store p a b c d continue=0 ofs=-1 select=-1 ; .endm 291eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_cp1_load p a b c d continue=0 ofs=-1 select=-1 ; .endm 292eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_cp2_store p a b c d continue=0 ofs=-1 select=-1 ; .endm 293eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_cp2_load p a b c d continue=0 ofs=-1 select=-1 ; .endm 294eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_cp3_store p a b c d continue=0 ofs=-1 select=-1 ; .endm 295eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_cp3_load p a b c d continue=0 ofs=-1 select=-1 ; .endm 296eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_cp4_store p a b c d continue=0 ofs=-1 select=-1 ; .endm 297eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_cp4_load p a b c d continue=0 ofs=-1 select=-1 ; .endm 298eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_cp5_store p a b c d continue=0 ofs=-1 select=-1 ; .endm 299eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_cp5_load p a b c d continue=0 ofs=-1 select=-1 ; .endm 300eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_cp7_store p a b c d continue=0 ofs=-1 select=-1 ; .endm 301eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner .macro xchal_cp7_load p a b c d continue=0 ofs=-1 select=-1 ; .endm 302eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 303eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner#endif /*_XTENSA_CORE_TIE_ASM_H*/ 304eff35af9c0c83a24376a67ff88c65679c25c7a51Johannes Weiner 305