Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eb28d0bb authored by Michal Simek's avatar Michal Simek
Browse files

ARM: zynq: Enable big-endian



Enable ARCH_SUPPORTS_BIG_ENDIAN in Kconfig.

zynq_secondary_trampoline is the first function
that is called on secondary CPU.
Reference:
"ARM: mcpm: fix big endian issue in mcpm startup code"
(sha1: 519ceb9f)

Fix early printk support. Based on:
"ARM: pl01x debug code endian fix"
(sha1: 76e3faf1)

Signed-off-by: default avatarMichal Simek <michal.simek@xilinx.com>
parent 90a6695a
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -43,12 +43,14 @@


		.macro	waituart,rd,rx
		.macro	waituart,rd,rx
1001:		ldr	\rd, [\rx, #UART_SR_OFFSET]
1001:		ldr	\rd, [\rx, #UART_SR_OFFSET]
ARM_BE8(	rev	\rd, \rd )
		tst	\rd, #UART_SR_TXEMPTY
		tst	\rd, #UART_SR_TXEMPTY
		beq	1001b
		beq	1001b
		.endm
		.endm


		.macro	busyuart,rd,rx
		.macro	busyuart,rd,rx
1002:		ldr	\rd, [\rx, #UART_SR_OFFSET]	@ get status register
1002:		ldr	\rd, [\rx, #UART_SR_OFFSET]	@ get status register
ARM_BE8(	rev	\rd, \rd )
		tst	\rd, #UART_SR_TXFULL		@
		tst	\rd, #UART_SR_TXFULL		@
		bne	1002b			@ wait if FIFO is full
		bne	1002b			@ wait if FIFO is full
		.endm
		.endm
+1 −0
Original line number Original line Diff line number Diff line
@@ -2,6 +2,7 @@ config ARCH_ZYNQ
	bool "Xilinx Zynq ARM Cortex A9 Platform" if ARCH_MULTI_V7
	bool "Xilinx Zynq ARM Cortex A9 Platform" if ARCH_MULTI_V7
	select ARCH_HAS_CPUFREQ
	select ARCH_HAS_CPUFREQ
	select ARCH_HAS_OPP
	select ARCH_HAS_OPP
	select ARCH_SUPPORTS_BIG_ENDIAN
	select ARM_AMBA
	select ARM_AMBA
	select ARM_GIC
	select ARM_GIC
	select ARM_GLOBAL_TIMER if !CPU_FREQ
	select ARM_GLOBAL_TIMER if !CPU_FREQ
+4 −1
Original line number Original line Diff line number Diff line
@@ -8,9 +8,12 @@
 */
 */
#include <linux/linkage.h>
#include <linux/linkage.h>
#include <linux/init.h>
#include <linux/init.h>
#include <asm/assembler.h>


ENTRY(zynq_secondary_trampoline)
ENTRY(zynq_secondary_trampoline)
	ldr	r0, [pc]
ARM_BE8(setend	be)				@ ensure we are in BE8 mode
	ldr	r0, zynq_secondary_trampoline_jump
ARM_BE8(rev	r0, r0)
	bx	r0
	bx	r0
.globl zynq_secondary_trampoline_jump
.globl zynq_secondary_trampoline_jump
zynq_secondary_trampoline_jump:
zynq_secondary_trampoline_jump: