1*d8834a13SMatthias Weisser /* 2*d8834a13SMatthias Weisser * arch/arm/include/asm/assembler.h 3*d8834a13SMatthias Weisser * 4*d8834a13SMatthias Weisser * Copyright (C) 1996-2000 Russell King 5*d8834a13SMatthias Weisser * 6*d8834a13SMatthias Weisser * This program is free software; you can redistribute it and/or modify 7*d8834a13SMatthias Weisser * it under the terms of the GNU General Public License version 2 as 8*d8834a13SMatthias Weisser * published by the Free Software Foundation. 9*d8834a13SMatthias Weisser * 10*d8834a13SMatthias Weisser * This file contains arm architecture specific defines 11*d8834a13SMatthias Weisser * for the different processors. 12*d8834a13SMatthias Weisser * 13*d8834a13SMatthias Weisser * Do not include any C declarations in this file - it is included by 14*d8834a13SMatthias Weisser * assembler source. 15*d8834a13SMatthias Weisser */ 16*d8834a13SMatthias Weisser 17*d8834a13SMatthias Weisser /* 18*d8834a13SMatthias Weisser * Endian independent macros for shifting bytes within registers. 19*d8834a13SMatthias Weisser */ 20*d8834a13SMatthias Weisser #ifndef __ARMEB__ 21*d8834a13SMatthias Weisser #define pull lsr 22*d8834a13SMatthias Weisser #define push lsl 23*d8834a13SMatthias Weisser #define get_byte_0 lsl #0 24*d8834a13SMatthias Weisser #define get_byte_1 lsr #8 25*d8834a13SMatthias Weisser #define get_byte_2 lsr #16 26*d8834a13SMatthias Weisser #define get_byte_3 lsr #24 27*d8834a13SMatthias Weisser #define put_byte_0 lsl #0 28*d8834a13SMatthias Weisser #define put_byte_1 lsl #8 29*d8834a13SMatthias Weisser #define put_byte_2 lsl #16 30*d8834a13SMatthias Weisser #define put_byte_3 lsl #24 31*d8834a13SMatthias Weisser #else 32*d8834a13SMatthias Weisser #define pull lsl 33*d8834a13SMatthias Weisser #define push lsr 34*d8834a13SMatthias Weisser #define get_byte_0 lsr #24 35*d8834a13SMatthias Weisser #define get_byte_1 lsr #16 36*d8834a13SMatthias Weisser #define get_byte_2 lsr #8 37*d8834a13SMatthias Weisser #define get_byte_3 lsl #0 38*d8834a13SMatthias Weisser #define put_byte_0 lsl #24 39*d8834a13SMatthias Weisser #define put_byte_1 lsl #16 40*d8834a13SMatthias Weisser #define put_byte_2 lsl #8 41*d8834a13SMatthias Weisser #define put_byte_3 lsl #0 42*d8834a13SMatthias Weisser #endif 43*d8834a13SMatthias Weisser 44*d8834a13SMatthias Weisser /* 45*d8834a13SMatthias Weisser * Data preload for architectures that support it 46*d8834a13SMatthias Weisser */ 47*d8834a13SMatthias Weisser #if defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) || \ 48*d8834a13SMatthias Weisser defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || \ 49*d8834a13SMatthias Weisser defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || \ 50*d8834a13SMatthias Weisser defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_7A__) || \ 51*d8834a13SMatthias Weisser defined(__ARM_ARCH_7R__) 52*d8834a13SMatthias Weisser #define PLD(code...) code 53*d8834a13SMatthias Weisser #else 54*d8834a13SMatthias Weisser #define PLD(code...) 55*d8834a13SMatthias Weisser #endif 56*d8834a13SMatthias Weisser 57*d8834a13SMatthias Weisser /* 58*d8834a13SMatthias Weisser * Cache alligned 59*d8834a13SMatthias Weisser */ 60*d8834a13SMatthias Weisser #define CALGN(code...) code 61