Hi all, I have some questions regarding start.S code for arm926ejs. Looking at the relocation code of u-boot:
relocate: /* relocate U-Boot to RAM */ adr r0, _start /* r0 <- current position of code */ ldr r1, _TEXT_BASE /* test if we run from flash or RAM */ cmp r0, r1 /* don't reloc during debug */ beq stack_setup ldr r2, _armboot_start ldr r3, _bss_start sub r2, r3, r2 /* r2 <- size of armboot */ add r2, r0, r2 /* r2 <- source end address */ 1) What is exactly difference between _start and _armboot_start ? I can see in the same file definition of _armboot_start : .globl _armboot_start _armboot_start: .word _start So, I am confused there - it looks like they are the same thing. 2) Line: sub r2, r3, r2 is logical, but after we do : add r2, r0, r2 /* r2 <- source end address */ to find source end address. But if _start and _armboot_start are the same, we already have this source end address : it is _bss_start. 3) Based on this, if _armboot_start and _start are not the same thing, I could guess that _start is pointing at 0x0 of the flash (or SDRAM), i.e. it is uP entry point after reset, and _armboot_start is the place where we start to put u-boot instructions (TEXT section). That would mean that we either have a) some program uP will execute before u-boot. What could that ever be? b) some section of u-boot that goes before TEXT section, and will never be relocated to RAM _TEXT_BASE. What could that ever be? Thanks for your answers. Best regards, Drasko DRASKOVIC
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot