diff options
author | Florian Fainelli <f.fainelli@gmail.com> | 2017-08-29 14:03:39 -0400 |
---|---|---|
committer | Florian Fainelli <f.fainelli@gmail.com> | 2017-09-25 14:56:04 -0400 |
commit | c14963521502b237a6817aceda6f3379296db75c (patch) | |
tree | 0f0be2a8ce40c9eff76a7226af8ab160b4ca87ef | |
parent | ea023be7071c4e91bb7895aad26c8a52e52032e6 (diff) |
ARM: brcmstb: Add appropriate ARM_BE8() macros for swapping
Building a big-endian kernel for ARCH_BRCMSTB revealed that we would not
be correctly polling for the right bit in the busyuart macro, turns out
there are a few transformations needed to work with big-endian kernels.
First we need to swap the value we read from SUN_TOP_CTRL to properly
compare it against our local tables. Then, just like 8250.S we need to
swap the value before storing it, and conversely swap it after a load.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
-rw-r--r-- | arch/arm/include/debug/brcmstb.S | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/arm/include/debug/brcmstb.S b/arch/arm/include/debug/brcmstb.S index 52aaed2b936f..c826f15d2f80 100644 --- a/arch/arm/include/debug/brcmstb.S +++ b/arch/arm/include/debug/brcmstb.S | |||
@@ -58,6 +58,7 @@ | |||
58 | /* Check SUN_TOP_CTRL base */ | 58 | /* Check SUN_TOP_CTRL base */ |
59 | ldr \rp, =SUN_TOP_CTRL_BASE @ load SUN_TOP_CTRL PA | 59 | ldr \rp, =SUN_TOP_CTRL_BASE @ load SUN_TOP_CTRL PA |
60 | ldr \rv, [\rp, #0] @ get register contents | 60 | ldr \rv, [\rp, #0] @ get register contents |
61 | ARM_BE8( rev \rv, \rv ) | ||
61 | and \rv, \rv, #0xffffff00 @ strip revision bits [7:0] | 62 | and \rv, \rv, #0xffffff00 @ strip revision bits [7:0] |
62 | 63 | ||
63 | /* Chip specific detection starts here */ | 64 | /* Chip specific detection starts here */ |
@@ -98,11 +99,13 @@ | |||
98 | .endm | 99 | .endm |
99 | 100 | ||
100 | .macro store, rd, rx:vararg | 101 | .macro store, rd, rx:vararg |
102 | ARM_BE8( rev \rd, \rd ) | ||
101 | str \rd, \rx | 103 | str \rd, \rx |
102 | .endm | 104 | .endm |
103 | 105 | ||
104 | .macro load, rd, rx:vararg | 106 | .macro load, rd, rx:vararg |
105 | ldr \rd, \rx | 107 | ldr \rd, \rx |
108 | ARM_BE8( rev \rd, \rd ) | ||
106 | .endm | 109 | .endm |
107 | 110 | ||
108 | .macro senduart,rd,rx | 111 | .macro senduart,rd,rx |