xref: /rk3399_rockchip-uboot/arch/arm/include/asm/assembler.h (revision d8834a1323af72f6145bc81adadd75185ef6065f)
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