diff options
Diffstat (limited to 'arch/arm/include/asm')
| -rw-r--r-- | arch/arm/include/asm/armv8/mmu.h | 111 | ||||
| -rw-r--r-- | arch/arm/include/asm/byteorder.h | 12 | ||||
| -rw-r--r-- | arch/arm/include/asm/cache.h | 5 | ||||
| -rw-r--r-- | arch/arm/include/asm/config.h | 6 | ||||
| -rw-r--r-- | arch/arm/include/asm/gic.h | 49 | ||||
| -rw-r--r-- | arch/arm/include/asm/global_data.h | 6 | ||||
| -rw-r--r-- | arch/arm/include/asm/io.h | 15 | ||||
| -rw-r--r-- | arch/arm/include/asm/macro.h | 53 | ||||
| -rw-r--r-- | arch/arm/include/asm/posix_types.h | 10 | ||||
| -rw-r--r-- | arch/arm/include/asm/proc-armv/ptrace.h | 21 | ||||
| -rw-r--r-- | arch/arm/include/asm/proc-armv/system.h | 59 | ||||
| -rw-r--r-- | arch/arm/include/asm/system.h | 84 | ||||
| -rw-r--r-- | arch/arm/include/asm/types.h | 4 | ||||
| -rw-r--r-- | arch/arm/include/asm/u-boot.h | 4 | ||||
| -rw-r--r-- | arch/arm/include/asm/unaligned.h | 2 | 
15 files changed, 425 insertions, 16 deletions
| diff --git a/arch/arm/include/asm/armv8/mmu.h b/arch/arm/include/asm/armv8/mmu.h new file mode 100644 index 000000000..1193e76a8 --- /dev/null +++ b/arch/arm/include/asm/armv8/mmu.h @@ -0,0 +1,111 @@ +/* + * (C) Copyright 2013 + * David Feng <fenghua@phytium.com.cn> + * + * SPDX-License-Identifier:	GPL-2.0+ + */ + +#ifndef _ASM_ARMV8_MMU_H_ +#define _ASM_ARMV8_MMU_H_ + +#ifdef __ASSEMBLY__ +#define _AC(X, Y)	X +#else +#define _AC(X, Y)	(X##Y) +#endif + +#define UL(x)		_AC(x, UL) + +/***************************************************************/ +/* + * The following definitions are related each other, shoud be + * calculated specifically. + */ +#define VA_BITS			(42)	/* 42 bits virtual address */ + +/* PAGE_SHIFT determines the page size */ +#undef  PAGE_SIZE +#define PAGE_SHIFT		16 +#define PAGE_SIZE		(1 << PAGE_SHIFT) +#define PAGE_MASK		(~(PAGE_SIZE-1)) + +/* + * section address mask and size definitions. + */ +#define SECTION_SHIFT		29 +#define SECTION_SIZE		(UL(1) << SECTION_SHIFT) +#define SECTION_MASK		(~(SECTION_SIZE-1)) +/***************************************************************/ + +/* + * Memory types + */ +#define MT_DEVICE_NGNRNE	0 +#define MT_DEVICE_NGNRE		1 +#define MT_DEVICE_GRE		2 +#define MT_NORMAL_NC		3 +#define MT_NORMAL		4 + +#define MEMORY_ATTRIBUTES	((0x00 << (MT_DEVICE_NGNRNE*8)) |	\ +				(0x04 << (MT_DEVICE_NGNRE*8)) |		\ +				(0x0c << (MT_DEVICE_GRE*8)) |		\ +				(0x44 << (MT_NORMAL_NC*8)) |		\ +				(UL(0xff) << (MT_NORMAL*8))) + +/* + * Hardware page table definitions. + * + * Level 2 descriptor (PMD). + */ +#define PMD_TYPE_MASK		(3 << 0) +#define PMD_TYPE_FAULT		(0 << 0) +#define PMD_TYPE_TABLE		(3 << 0) +#define PMD_TYPE_SECT		(1 << 0) + +/* + * Section + */ +#define PMD_SECT_S		(3 << 8) +#define PMD_SECT_AF		(1 << 10) +#define PMD_SECT_NG		(1 << 11) +#define PMD_SECT_PXN		(UL(1) << 53) +#define PMD_SECT_UXN		(UL(1) << 54) + +/* + * AttrIndx[2:0] + */ +#define PMD_ATTRINDX(t)		((t) << 2) +#define PMD_ATTRINDX_MASK	(7 << 2) + +/* + * TCR flags. + */ +#define TCR_T0SZ(x)		((64 - (x)) << 0) +#define TCR_IRGN_NC		(0 << 8) +#define TCR_IRGN_WBWA		(1 << 8) +#define TCR_IRGN_WT		(2 << 8) +#define TCR_IRGN_WBNWA		(3 << 8) +#define TCR_IRGN_MASK		(3 << 8) +#define TCR_ORGN_NC		(0 << 10) +#define TCR_ORGN_WBWA		(1 << 10) +#define TCR_ORGN_WT		(2 << 10) +#define TCR_ORGN_WBNWA		(3 << 10) +#define TCR_ORGN_MASK		(3 << 10) +#define TCR_SHARED_NON		(0 << 12) +#define TCR_SHARED_OUTER	(1 << 12) +#define TCR_SHARED_INNER	(2 << 12) +#define TCR_TG0_4K		(0 << 14) +#define TCR_TG0_64K		(1 << 14) +#define TCR_TG0_16K		(2 << 14) +#define TCR_EL1_IPS_BITS	(UL(3) << 32)	/* 42 bits physical address */ +#define TCR_EL2_IPS_BITS	(3 << 16)	/* 42 bits physical address */ +#define TCR_EL3_IPS_BITS	(3 << 16)	/* 42 bits physical address */ + +/* PTWs cacheable, inner/outer WBWA and non-shareable */ +#define TCR_FLAGS		(TCR_TG0_64K |		\ +				TCR_SHARED_NON |	\ +				TCR_ORGN_WBWA |		\ +				TCR_IRGN_WBWA |		\ +				TCR_T0SZ(VA_BITS)) + +#endif /* _ASM_ARMV8_MMU_H_ */ diff --git a/arch/arm/include/asm/byteorder.h b/arch/arm/include/asm/byteorder.h index c3489f1e1..71a996630 100644 --- a/arch/arm/include/asm/byteorder.h +++ b/arch/arm/include/asm/byteorder.h @@ -23,10 +23,22 @@  #  define __SWAB_64_THRU_32__  #endif +#ifdef	CONFIG_ARM64 + +#ifdef __AARCH64EB__ +#include <linux/byteorder/big_endian.h> +#else +#include <linux/byteorder/little_endian.h> +#endif + +#else	/* CONFIG_ARM64 */ +  #ifdef __ARMEB__  #include <linux/byteorder/big_endian.h>  #else  #include <linux/byteorder/little_endian.h>  #endif +#endif	/* CONFIG_ARM64 */ +  #endif diff --git a/arch/arm/include/asm/cache.h b/arch/arm/include/asm/cache.h index 6d60a4a6d..ddebbc8fc 100644 --- a/arch/arm/include/asm/cache.h +++ b/arch/arm/include/asm/cache.h @@ -11,6 +11,8 @@  #include <asm/system.h> +#ifndef CONFIG_ARM64 +  /*   * Invalidate L2 Cache using co-proc instruction   */ @@ -28,6 +30,9 @@ void l2_cache_disable(void);  void set_section_dcache(int section, enum dcache_option option);  void dram_bank_mmu_setup(int bank); + +#endif +  /*   * The current upper bound for ARM L1 data cache line sizes is 64 bytes.  We   * use that value for aligning DMA buffers unless the board config has specified diff --git a/arch/arm/include/asm/config.h b/arch/arm/include/asm/config.h index 99b703e1e..abf79e5c9 100644 --- a/arch/arm/include/asm/config.h +++ b/arch/arm/include/asm/config.h @@ -9,4 +9,10 @@  #define CONFIG_LMB  #define CONFIG_SYS_BOOT_RAMDISK_HIGH + +#ifdef CONFIG_ARM64 +#define CONFIG_PHYS_64BIT +#define CONFIG_STATIC_RELA +#endif +  #endif diff --git a/arch/arm/include/asm/gic.h b/arch/arm/include/asm/gic.h index a0891cc09..ac2b2bfbe 100644 --- a/arch/arm/include/asm/gic.h +++ b/arch/arm/include/asm/gic.h @@ -1,19 +1,54 @@ -#ifndef __GIC_V2_H__ -#define __GIC_V2_H__ +#ifndef __GIC_H__ +#define __GIC_H__ -/* register offsets for the ARM generic interrupt controller (GIC) */ +/* Register offsets for the ARM generic interrupt controller (GIC) */  #define GIC_DIST_OFFSET		0x1000 +#define GIC_CPU_OFFSET_A9	0x0100 +#define GIC_CPU_OFFSET_A15	0x2000 + +/* Distributor Registers */  #define GICD_CTLR		0x0000  #define GICD_TYPER		0x0004 +#define GICD_IIDR		0x0008 +#define GICD_STATUSR		0x0010 +#define GICD_SETSPI_NSR		0x0040 +#define GICD_CLRSPI_NSR		0x0048 +#define GICD_SETSPI_SR		0x0050 +#define GICD_CLRSPI_SR		0x0058 +#define GICD_SEIR		0x0068  #define GICD_IGROUPRn		0x0080 -#define GICD_SGIR		0x0F00 +#define GICD_ISENABLERn		0x0100 +#define GICD_ICENABLERn		0x0180 +#define GICD_ISPENDRn		0x0200 +#define GICD_ICPENDRn		0x0280 +#define GICD_ISACTIVERn		0x0300 +#define GICD_ICACTIVERn		0x0380 +#define GICD_IPRIORITYRn	0x0400 +#define GICD_ITARGETSRn		0x0800 +#define GICD_ICFGR		0x0c00 +#define GICD_IGROUPMODRn	0x0d00 +#define GICD_NSACRn		0x0e00 +#define GICD_SGIR		0x0f00 +#define GICD_CPENDSGIRn		0x0f10 +#define GICD_SPENDSGIRn		0x0f20 +#define GICD_IROUTERn		0x6000 -#define GIC_CPU_OFFSET_A9	0x0100 -#define GIC_CPU_OFFSET_A15	0x2000 +/* Cpu Interface Memory Mapped Registers */  #define GICC_CTLR		0x0000  #define GICC_PMR		0x0004 +#define GICC_BPR		0x0008  #define GICC_IAR		0x000C  #define GICC_EOIR		0x0010 +#define GICC_RPR		0x0014 +#define GICC_HPPIR		0x0018 +#define GICC_ABPR		0x001c +#define GICC_AIAR		0x0020 +#define GICC_AEOIR		0x0024 +#define GICC_AHPPIR		0x0028 +#define GICC_APRn		0x00d0 +#define GICC_NSAPRn		0x00e0 +#define GICC_IIDR		0x00fc +#define GICC_DIR		0x1000 -#endif +#endif /* __GIC_H__ */ diff --git a/arch/arm/include/asm/global_data.h b/arch/arm/include/asm/global_data.h index e12643609..60e872637 100644 --- a/arch/arm/include/asm/global_data.h +++ b/arch/arm/include/asm/global_data.h @@ -47,6 +47,10 @@ struct arch_global_data {  #include <asm-generic/global_data.h> -#define DECLARE_GLOBAL_DATA_PTR     register volatile gd_t *gd asm ("r9") +#ifdef CONFIG_ARM64 +#define DECLARE_GLOBAL_DATA_PTR		register volatile gd_t *gd asm ("x18") +#else +#define DECLARE_GLOBAL_DATA_PTR		register volatile gd_t *gd asm ("r9") +#endif  #endif /* __ASM_GBL_DATA_H */ diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h index 1fbc531a0..6a1f05ac3 100644 --- a/arch/arm/include/asm/io.h +++ b/arch/arm/include/asm/io.h @@ -75,42 +75,45 @@ static inline phys_addr_t virt_to_phys(void * vaddr)  #define __arch_putw(v,a)		(*(volatile unsigned short *)(a) = (v))  #define __arch_putl(v,a)		(*(volatile unsigned int *)(a) = (v)) -extern inline void __raw_writesb(unsigned int addr, const void *data, int bytelen) +extern inline void __raw_writesb(unsigned long addr, const void *data, +				 int bytelen)  {  	uint8_t *buf = (uint8_t *)data;  	while(bytelen--)  		__arch_putb(*buf++, addr);  } -extern inline void __raw_writesw(unsigned int addr, const void *data, int wordlen) +extern inline void __raw_writesw(unsigned long addr, const void *data, +				 int wordlen)  {  	uint16_t *buf = (uint16_t *)data;  	while(wordlen--)  		__arch_putw(*buf++, addr);  } -extern inline void __raw_writesl(unsigned int addr, const void *data, int longlen) +extern inline void __raw_writesl(unsigned long addr, const void *data, +				 int longlen)  {  	uint32_t *buf = (uint32_t *)data;  	while(longlen--)  		__arch_putl(*buf++, addr);  } -extern inline void __raw_readsb(unsigned int addr, void *data, int bytelen) +extern inline void __raw_readsb(unsigned long addr, void *data, int bytelen)  {  	uint8_t *buf = (uint8_t *)data;  	while(bytelen--)  		*buf++ = __arch_getb(addr);  } -extern inline void __raw_readsw(unsigned int addr, void *data, int wordlen) +extern inline void __raw_readsw(unsigned long addr, void *data, int wordlen)  {  	uint16_t *buf = (uint16_t *)data;  	while(wordlen--)  		*buf++ = __arch_getw(addr);  } -extern inline void __raw_readsl(unsigned int addr, void *data, int longlen) +extern inline void __raw_readsl(unsigned long addr, void *data, int longlen)  {  	uint32_t *buf = (uint32_t *)data;  	while(longlen--) diff --git a/arch/arm/include/asm/macro.h b/arch/arm/include/asm/macro.h index ff13f36ba..f77e4b880 100644 --- a/arch/arm/include/asm/macro.h +++ b/arch/arm/include/asm/macro.h @@ -54,5 +54,58 @@  	bcs	1b  .endm +#ifdef CONFIG_ARM64 +/* + * Register aliases. + */ +lr	.req	x30 + +/* + * Branch according to exception level + */ +.macro	switch_el, xreg, el3_label, el2_label, el1_label +	mrs	\xreg, CurrentEL +	cmp	\xreg, 0xc +	b.eq	\el3_label +	cmp	\xreg, 0x8 +	b.eq	\el2_label +	cmp	\xreg, 0x4 +	b.eq	\el1_label +.endm + +/* + * Branch if current processor is a slave, + * choose processor with all zero affinity value as the master. + */ +.macro	branch_if_slave, xreg, slave_label +	mrs	\xreg, mpidr_el1 +	tst	\xreg, #0xff		/* Test Affinity 0 */ +	b.ne	\slave_label +	lsr	\xreg, \xreg, #8 +	tst	\xreg, #0xff		/* Test Affinity 1 */ +	b.ne	\slave_label +	lsr	\xreg, \xreg, #8 +	tst	\xreg, #0xff		/* Test Affinity 2 */ +	b.ne	\slave_label +	lsr	\xreg, \xreg, #16 +	tst	\xreg, #0xff		/* Test Affinity 3 */ +	b.ne	\slave_label +.endm + +/* + * Branch if current processor is a master, + * choose processor with all zero affinity value as the master. + */ +.macro	branch_if_master, xreg1, xreg2, master_label +	mrs	\xreg1, mpidr_el1 +	lsr	\xreg2, \xreg1, #32 +	lsl	\xreg1, \xreg1, #40 +	lsr	\xreg1, \xreg1, #40 +	orr	\xreg1, \xreg1, \xreg2 +	cbz	\xreg1, \master_label +.endm + +#endif /* CONFIG_ARM64 */ +  #endif /* __ASSEMBLY__ */  #endif /* __ASM_ARM_MACRO_H__ */ diff --git a/arch/arm/include/asm/posix_types.h b/arch/arm/include/asm/posix_types.h index c412486db..9ba9add4f 100644 --- a/arch/arm/include/asm/posix_types.h +++ b/arch/arm/include/asm/posix_types.h @@ -13,6 +13,8 @@  #ifndef __ARCH_ARM_POSIX_TYPES_H  #define __ARCH_ARM_POSIX_TYPES_H +#include <config.h> +  /*   * This file is generally used by user-level software, so you need to   * be a little careful about namespace pollution etc.  Also, we cannot @@ -28,9 +30,17 @@ typedef int			__kernel_pid_t;  typedef unsigned short		__kernel_ipc_pid_t;  typedef unsigned short		__kernel_uid_t;  typedef unsigned short		__kernel_gid_t; + +#ifdef	CONFIG_ARM64 +typedef unsigned long		__kernel_size_t; +typedef long			__kernel_ssize_t; +typedef long			__kernel_ptrdiff_t; +#else	/* CONFIG_ARM64 */  typedef unsigned int		__kernel_size_t;  typedef int			__kernel_ssize_t;  typedef int			__kernel_ptrdiff_t; +#endif	/* CONFIG_ARM64 */ +  typedef long			__kernel_time_t;  typedef long			__kernel_suseconds_t;  typedef long			__kernel_clock_t; diff --git a/arch/arm/include/asm/proc-armv/ptrace.h b/arch/arm/include/asm/proc-armv/ptrace.h index a060ee67e..21aef58b7 100644 --- a/arch/arm/include/asm/proc-armv/ptrace.h +++ b/arch/arm/include/asm/proc-armv/ptrace.h @@ -10,6 +10,25 @@  #ifndef __ASM_PROC_PTRACE_H  #define __ASM_PROC_PTRACE_H +#ifdef CONFIG_ARM64 + +#define PCMASK		0 + +#ifndef __ASSEMBLY__ + +/* + * This struct defines the way the registers are stored + * on the stack during an exception. + */ +struct pt_regs { +	unsigned long elr; +	unsigned long regs[31]; +}; + +#endif	/* __ASSEMBLY__ */ + +#else	/* CONFIG_ARM64 */ +  #define USR26_MODE	0x00  #define FIQ26_MODE	0x01  #define IRQ26_MODE	0x02 @@ -104,4 +123,6 @@ static inline int valid_user_regs(struct pt_regs *regs)  #endif	/* __ASSEMBLY__ */ +#endif	/* CONFIG_ARM64 */ +  #endif diff --git a/arch/arm/include/asm/proc-armv/system.h b/arch/arm/include/asm/proc-armv/system.h index cda8976b6..693d1f492 100644 --- a/arch/arm/include/asm/proc-armv/system.h +++ b/arch/arm/include/asm/proc-armv/system.h @@ -13,6 +13,60 @@  /*   * Save the current interrupt enable state & disable IRQs   */ +#ifdef CONFIG_ARM64 + +/* + * Save the current interrupt enable state + * and disable IRQs/FIQs + */ +#define local_irq_save(flags)					\ +	({							\ +	asm volatile(						\ +	"mrs	%0, daif"					\ +	"msr	daifset, #3"					\ +	: "=r" (flags)						\ +	:							\ +	: "memory");						\ +	}) + +/* + * restore saved IRQ & FIQ state + */ +#define local_irq_restore(flags)				\ +	({							\ +	asm volatile(						\ +	"msr	daif, %0"					\ +	:							\ +	: "r" (flags)						\ +	: "memory");						\ +	}) + +/* + * Enable IRQs/FIQs + */ +#define local_irq_enable()					\ +	({							\ +	asm volatile(						\ +	"msr	daifclr, #3"					\ +	:							\ +	:							\ +	: "memory");						\ +	}) + +/* + * Disable IRQs/FIQs + */ +#define local_irq_disable()					\ +	({							\ +	asm volatile(						\ +	"msr	daifset, #3"					\ +	:							\ +	:							\ +	: "memory");						\ +	}) + +#else	/* CONFIG_ARM64 */ +  #define local_irq_save(x)					\  	({							\  		unsigned long temp;				\ @@ -107,7 +161,10 @@  	: "r" (x)						\  	: "memory") -#if defined(CONFIG_CPU_SA1100) || defined(CONFIG_CPU_SA110) +#endif	/* CONFIG_ARM64 */ + +#if defined(CONFIG_CPU_SA1100) || defined(CONFIG_CPU_SA110) || \ +	defined(CONFIG_ARM64)  /*   * On the StrongARM, "swp" is terminally broken since it bypasses the   * cache totally.  This means that the cache becomes inconsistent, and, diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h index 760345f84..4178f8cf7 100644 --- a/arch/arm/include/asm/system.h +++ b/arch/arm/include/asm/system.h @@ -1,6 +1,86 @@  #ifndef __ASM_ARM_SYSTEM_H  #define __ASM_ARM_SYSTEM_H +#ifdef CONFIG_ARM64 + +/* + * SCTLR_EL1/SCTLR_EL2/SCTLR_EL3 bits definitions + */ +#define CR_M		(1 << 0)	/* MMU enable			*/ +#define CR_A		(1 << 1)	/* Alignment abort enable	*/ +#define CR_C		(1 << 2)	/* Dcache enable		*/ +#define CR_SA		(1 << 3)	/* Stack Alignment Check Enable	*/ +#define CR_I		(1 << 12)	/* Icache enable		*/ +#define CR_WXN		(1 << 19)	/* Write Permision Imply XN	*/ +#define CR_EE		(1 << 25)	/* Exception (Big) Endian	*/ + +#define PGTABLE_SIZE	(0x10000) + +#ifndef __ASSEMBLY__ + +#define isb()				\ +	({asm volatile(			\ +	"isb" : : : "memory");		\ +	}) + +#define wfi()				\ +	({asm volatile(			\ +	"wfi" : : : "memory");		\ +	}) + +static inline unsigned int current_el(void) +{ +	unsigned int el; +	asm volatile("mrs %0, CurrentEL" : "=r" (el) : : "cc"); +	return el >> 2; +} + +static inline unsigned int get_sctlr(void) +{ +	unsigned int el, val; + +	el = current_el(); +	if (el == 1) +		asm volatile("mrs %0, sctlr_el1" : "=r" (val) : : "cc"); +	else if (el == 2) +		asm volatile("mrs %0, sctlr_el2" : "=r" (val) : : "cc"); +	else +		asm volatile("mrs %0, sctlr_el3" : "=r" (val) : : "cc"); + +	return val; +} + +static inline void set_sctlr(unsigned int val) +{ +	unsigned int el; + +	el = current_el(); +	if (el == 1) +		asm volatile("msr sctlr_el1, %0" : : "r" (val) : "cc"); +	else if (el == 2) +		asm volatile("msr sctlr_el2, %0" : : "r" (val) : "cc"); +	else +		asm volatile("msr sctlr_el3, %0" : : "r" (val) : "cc"); + +	asm volatile("isb"); +} + +void __asm_flush_dcache_all(void); +void __asm_flush_dcache_range(u64 start, u64 end); +void __asm_invalidate_tlb_all(void); +void __asm_invalidate_icache_all(void); + +void armv8_switch_to_el2(void); +void armv8_switch_to_el1(void); +void gic_init(void); +void gic_send_sgi(unsigned long sgino); +void wait_for_wakeup(void); +void smp_kick_all_cpus(void); + +#endif	/* __ASSEMBLY__ */ + +#else /* CONFIG_ARM64 */ +  #ifdef __KERNEL__  #define CPU_ARCH_UNKNOWN	0 @@ -45,6 +125,8 @@  #define CR_AFE	(1 << 29)	/* Access flag enable			*/  #define CR_TE	(1 << 30)	/* Thumb exception enable		*/ +#define PGTABLE_SIZE		(4096 * 4) +  /*   * This is used to ensure the compiler did actually allocate the register we   * asked it for some inline assembly sequences.  Apparently we can't trust @@ -132,4 +214,6 @@ void mmu_page_table_flush(unsigned long start, unsigned long stop);  #endif /* __KERNEL__ */ +#endif /* CONFIG_ARM64 */ +  #endif diff --git a/arch/arm/include/asm/types.h b/arch/arm/include/asm/types.h index 71dc049da..2326420a7 100644 --- a/arch/arm/include/asm/types.h +++ b/arch/arm/include/asm/types.h @@ -39,7 +39,11 @@ typedef unsigned int u32;  typedef signed long long s64;  typedef unsigned long long u64; +#ifdef	CONFIG_ARM64 +#define BITS_PER_LONG 64 +#else	/* CONFIG_ARM64 */  #define BITS_PER_LONG 32 +#endif	/* CONFIG_ARM64 */  /* Dma addresses are 32-bits wide.  */ diff --git a/arch/arm/include/asm/u-boot.h b/arch/arm/include/asm/u-boot.h index 2b5fce86a..cb81232b8 100644 --- a/arch/arm/include/asm/u-boot.h +++ b/arch/arm/include/asm/u-boot.h @@ -44,6 +44,10 @@ typedef struct bd_info {  #endif /* !CONFIG_SYS_GENERIC_BOARD */  /* For image.h:image_check_target_arch() */ +#ifndef CONFIG_ARM64  #define IH_ARCH_DEFAULT IH_ARCH_ARM +#else +#define IH_ARCH_DEFAULT IH_ARCH_ARM64 +#endif  #endif	/* _U_BOOT_H_ */ diff --git a/arch/arm/include/asm/unaligned.h b/arch/arm/include/asm/unaligned.h index 44593a894..0a228fb8e 100644 --- a/arch/arm/include/asm/unaligned.h +++ b/arch/arm/include/asm/unaligned.h @@ -8,7 +8,7 @@  /*   * Select endianness   */ -#ifndef __ARMEB__ +#if __BYTE_ORDER == __LITTLE_ENDIAN  #define get_unaligned	__get_unaligned_le  #define put_unaligned	__put_unaligned_le  #else |