Bootloader NAND

a.k.
Hi,
I'm having trouble running code from NAND. I've used Eclipse and
CodeSourcery as my SDK. 
I've looked at the 2440init.s file supplied with the mini2440 board.
So I've adapted the code and taken the following steps to load and run from
NAND:
- set handlers
- switch off wtd, interrupts
- configure clock
- configure memory controls
- initialise stacks
- copy code from NAND

The following code however I don't understand:
adr  r0, ResetEntry
  ldr  r2, BaseOfROM
  cmp  r0, r2
  ldreq  r0, TopOfROM
  beq  InitRam  
  ldr r3, TopOfROM
0  
  ldmia  r0!, {r4-r7}
  stmia  r2!, {r4-r7}
  cmp  r2, r3
  bcc  %B0
  
  sub  r2, r2, r3
  sub  r0, r0, r2        
    
InitRam  
  ldr  r2, BaseOfBSS
  ldr  r3, BaseOfZero  
0
  cmp  r2, r3
  ldrcc  r1, [r0], #4
  strcc  r1, [r2], #4
  bcc  %B0  

  mov  r0,  #0
  ldr  r3,  EndOfBSS
1  
  cmp  r2,  r3
  strcc  r0, [r2], #4
  bcc  %B1
  
  ldr  pc, =%F2    ;goto compiler address

I'm assuming this remaps to RAM? The baseofROM values equate to
|Image$$RO$$Base|, how would this work out in GNU Arm assembler?
I tried putting in direct values:
  adr  r0, _reset
  ldr  r2,0x0    @baseofROM/RObase
  cmp  r0, r2
  ldreq  r0, 0x30000000  @topofROM/ROlimit
  beq  InitRam
  ldr r3, 0x30000000    @topofROM
but it throws up errors:
bad immediate value for offset (805305776)
or
internal_relocation (type: OFFSET_IMM) not fixed up

Any suggestions would be great at this point!
Thanks!