earlyprintk messages are not appearing on the terminal
emulator during a big endian kernel boot. If we
byte swap the sending data it comes properly.
Signed-off-by: Arun Chandran <[email protected]>
---
---
This can be tested by adding 'early_print("early print test\n");'
to setup_arch() in arch/arm/kernel/setup.c
---
arch/arm/include/debug/zynq.S | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/include/debug/zynq.S b/arch/arm/include/debug/zynq.S
index bd13ded..0d274fe 100644
--- a/arch/arm/include/debug/zynq.S
+++ b/arch/arm/include/debug/zynq.S
@@ -38,6 +38,7 @@
.endm
.macro senduart,rd,rx
+ARM_BE8( rev \rd, \rd )
str \rd, [\rx, #UART_FIFO_OFFSET] @ TXDATA
.endm
--
1.9.1
On 06/10/2015 04:13 PM, Arun Chandran wrote:
> earlyprintk messages are not appearing on the terminal
> emulator during a big endian kernel boot. If we
> byte swap the sending data it comes properly.
>
> Signed-off-by: Arun Chandran <[email protected]>
> ---
> ---
> This can be tested by adding 'early_print("early print test\n");'
> to setup_arch() in arch/arm/kernel/setup.c
> ---
> arch/arm/include/debug/zynq.S | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/arm/include/debug/zynq.S b/arch/arm/include/debug/zynq.S
> index bd13ded..0d274fe 100644
> --- a/arch/arm/include/debug/zynq.S
> +++ b/arch/arm/include/debug/zynq.S
> @@ -38,6 +38,7 @@
> .endm
>
> .macro senduart,rd,rx
> +ARM_BE8( rev \rd, \rd )
> str \rd, [\rx, #UART_FIFO_OFFSET] @ TXDATA
> .endm
>
>
Tested-by: Michal Simek <[email protected]>
Thanks,
Michal
earlyprintk messages are not appearing on the terminal
emulator during a big endian kernel boot. In BE mode
sending full words to UART will result in unprintable
characters as they are byte swapped versions of printable
ones. So send only bytes.
Signed-off-by: Arun Chandran <[email protected]>
---
---
Changes since v1:
removed the byte swapping logic. Just send characters instead.
---
arch/arm/include/debug/zynq.S | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/include/debug/zynq.S b/arch/arm/include/debug/zynq.S
index bd13ded..de86b92 100644
--- a/arch/arm/include/debug/zynq.S
+++ b/arch/arm/include/debug/zynq.S
@@ -38,7 +38,7 @@
.endm
.macro senduart,rd,rx
- str \rd, [\rx, #UART_FIFO_OFFSET] @ TXDATA
+ strb \rd, [\rx, #UART_FIFO_OFFSET] @ TXDATA
.endm
.macro waituart,rd,rx
--
1.9.1
On Thu, Jun 11, 2015 at 11:43 PM, Michal Simek <[email protected]> wrote:
> On 06/10/2015 04:13 PM, Arun Chandran wrote:
>> earlyprintk messages are not appearing on the terminal
>> emulator during a big endian kernel boot. If we
>> byte swap the sending data it comes properly.
>>
>> Signed-off-by: Arun Chandran <[email protected]>
>> ---
>> ---
>> This can be tested by adding 'early_print("early print test\n");'
>> to setup_arch() in arch/arm/kernel/setup.c
>> ---
>> arch/arm/include/debug/zynq.S | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/arch/arm/include/debug/zynq.S b/arch/arm/include/debug/zynq.S
>> index bd13ded..0d274fe 100644
>> --- a/arch/arm/include/debug/zynq.S
>> +++ b/arch/arm/include/debug/zynq.S
>> @@ -38,6 +38,7 @@
>> .endm
>>
>> .macro senduart,rd,rx
>> +ARM_BE8( rev \rd, \rd )
>> str \rd, [\rx, #UART_FIFO_OFFSET] @ TXDATA
>> .endm
>>
>>
>
> Tested-by: Michal Simek <[email protected]>
>
I think just using strb instead of str will do the work
much better. I have send v2 with that logic
Thanks for testing it.
--Arun
On 06/12/2015 08:53 AM, Arun Chandran wrote:
> earlyprintk messages are not appearing on the terminal
> emulator during a big endian kernel boot. In BE mode
> sending full words to UART will result in unprintable
> characters as they are byte swapped versions of printable
> ones. So send only bytes.
>
> Signed-off-by: Arun Chandran <[email protected]>
> ---
> ---
> Changes since v1:
> removed the byte swapping logic. Just send characters instead.
> ---
> arch/arm/include/debug/zynq.S | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/arm/include/debug/zynq.S b/arch/arm/include/debug/zynq.S
> index bd13ded..de86b92 100644
> --- a/arch/arm/include/debug/zynq.S
> +++ b/arch/arm/include/debug/zynq.S
> @@ -38,7 +38,7 @@
> .endm
>
> .macro senduart,rd,rx
> - str \rd, [\rx, #UART_FIFO_OFFSET] @ TXDATA
> + strb \rd, [\rx, #UART_FIFO_OFFSET] @ TXDATA
> .endm
>
> .macro waituart,rd,rx
>
ok - this works too.
Tested-by: Michal Simek <[email protected]>
Thanks,
Michal