1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- var
- _stack_top: record end; external name '_stack_top';
- _data: record end; external name '_data';
- _edata: record end; external name '_edata';
- _text_start: record end; external name '_text_start';
- _etext: record end; external name '_etext';
- _bss_start: record end; external name '_bss_start';
- _bss_end: record end; external name '_bss_end';
- procedure Pascalmain; external name 'PASCALMAIN';
- procedure HaltProc; assembler; nostackframe; public name'_haltproc';
- asm
- .Lloop:
- b .Lloop
- end;
- procedure Startup; assembler; nostackframe; [public, alias: '_START'];
- asm
- ldr r1,.L_etext
- ldr r2,.L_data
- ldr r3,.L_edata
- .Lcopyloop:
- cmp r2,r3
- ittt ls
- ldrls r0,[r1],#4
- strls r0,[r2],#4
- bls .Lcopyloop
- // clear onboard ram
- ldr r1,.L_bss_start
- ldr r2,.L_bss_end
- mov r0,#0
- .Lzeroloop:
- cmp r1,r2
- itt ls
- strls r0,[r1],#4
- bls .Lzeroloop
- {$ifdef REMAP_VECTTAB}
- ldr r0, .Lvtor
- ldr r1, .Ltext_start
- str r1, [r0]
- {$endif REMAP_VECTTAB}
- bl PASCALMAIN
- b HaltProc
- .L_bss_start:
- .long _bss_start
- .L_bss_end:
- .long _bss_end
- .L_etext:
- .long _etext
- .L_data:
- .long _data
- .L_edata:
- .long _edata
- {$ifdef REMAP_VECTTAB}
- .Lvtor:
- .long 0xE000ED08
- .Ltext_start:
- .long _text_start
- {$endif REMAP_VECTTAB}
- end;
|