[U-Boot] [PATCH] MIPS: start.S: unify and simplify reset vector handling
Daniel Schwierzeck
daniel.schwierzeck at gmail.com
Fri Feb 1 21:48:50 CET 2013
2013/1/31 Gabor Juhos <juhosg at openwrt.org>:
> Hi Daniel,
>
>> From: Daniel Schwierzeck <daniel.schwierzeck at gmail.com>
>>
>> Adopt reset vector handling from Yamon.
>>
>> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck at gmail.com>
>> ---
>> arch/mips/cpu/mips32/start.S | 185 +++++++++----------------------------------
>> arch/mips/cpu/mips64/start.S | 55 +++++++------
>> 2 files changed, 64 insertions(+), 176 deletions(-)
>>
>> diff --git a/arch/mips/cpu/mips32/start.S b/arch/mips/cpu/mips32/start.S
>> index 65acf7d..a7cd2c4 100644
>> --- a/arch/mips/cpu/mips32/start.S
>> +++ b/arch/mips/cpu/mips32/start.S
>> @@ -47,19 +47,16 @@
>> .set pop
>> .endm
>>
>> -#define RVECENT(f,n) \
>> - b f; nop
>> -#define XVECENT(f,bev) \
>> - b f ; \
>> - li k0,bev
>> -
>> .set noreorder
>>
>> .globl _start
>> .text
>> _start:
>> - RVECENT(reset,0) # U-boot entry point
>> - RVECENT(reset,1) # software reboot
>> + /* U-boot entry point */
>> + b reset
>> + nop
>> + nop
>> + nop
>> #ifdef CONFIG_SYS_XWAY_EBU_BOOTCFG
>
> We should use '.org 0x010' here, that would make it it consistent with the rest
> of the code. Additionally, that would make it possible to remove the last two
> 'nop' instructions before the ifdef.
ok, fixed
>
>> /*
>> * Almost all Lantiq XWAY SoC devices have an external bus unit (EBU) to
>> @@ -71,139 +68,40 @@ _start:
>> .word CONFIG_SYS_XWAY_EBU_BOOTCFG
>> .word 0x00000000
>> #else
>> - RVECENT(romReserved,2)
>> + .word 0xffffffff
>> + .word 0xffffffff
>
> I assume that Yamon uses these two words to ensure that there will be no
> instructions at this address because this overlaps with the REVISION register on
> the MIPS boards. U-Boot does not support MIPS development boards yet, so
> strictly speaking we don't need this at the moment.
ok, I only init the words for Lantiq SoC's and let the assembler fill
the gap with zeroes
>
>> #endif
>
> <...>
>
>> - /*
>> - * We hope there are no more reserved vectors!
>> - * 128 * 8 == 1024 == 0x400
>> - * so this is address R_VEC+0x400 == 0xbfc00400
>> - */
>> +.org 0x200
>
> The indentation of this looks weird. All other pseudo op-codes are preceded by a
> tab. It would be more consistent to add a tab before each '.org'.
yes, fixed
>
>> + /* TLB refill, 32 bit task */
>> +1: b 1b
>> + nop
>
> <...>
>
>> diff --git a/arch/mips/cpu/mips64/start.S b/arch/mips/cpu/mips64/start.S
>> index 1522594..0628211 100644
>> --- a/arch/mips/cpu/mips64/start.S
>> +++ b/arch/mips/cpu/mips64/start.S
>> @@ -52,40 +52,44 @@
>> .globl _start
>> .text
>> _start:
>> - .org 0x000
>> + /* U-boot entry point */
>> b reset
>> nop
>> - .org 0x080
>> - b romReserved
>> nop
>> - .org 0x100
>> - b romReserved
>> nop
>> - .org 0x180
>> - b romReserved
>> + .word 0xffffffff
>> + .word 0xffffffff
>
> These two words and the preceding two nop instructions should be removed as well.
>
>> +
>> +.org 0x200
>> + /* TLB refill, 32 bit task */
>> +1: b 1b
>> nop
>> - .org 0x200
>
> The previous comment for the '.org' op-codes applies here as well. Even the
> patch would be a bit simpler if you would not remove the leading tabs.
>
> -Gabor
thanks for the comments
--
Best regards,
Daniel
More information about the U-Boot
mailing list