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