123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- unit lpc1768;
- {$goto on}
- {$define lpc1768}
- interface
- var
- STCTRL : DWord absolute $E000E010;
- STRELOAD : DWord absolute $E000E014;
- STCURR : DWord absolute $E000E018;
- FIO1DIR2 : Byte absolute $2009C022;
- FIO1SET2 : Byte absolute $2009C03A;
- FIO1CLR2 : Byte absolute $2009C03E;
- SCS : DWord absolute $400FC1A0;
- CLKSRCSEL: DWord absolute $400FC10C;
- PLL0FEED : DWord absolute $400FC08C;
- PLL0CON : DWord absolute $400FC080;
- PLL0CFG : DWord absolute $400FC084;
- PLL0STAT : DWord absolute $400FC088;
- CCLKCFG : DWord absolute $400FC104;
- implementation
- var
- _data: record end; external name '_data';
- _edata: record end; external name '_edata';
- _etext: record end; external name '_etext';
- _bss_start: record end; external name '_bss_start';
- _bss_end: record end; external name '_bss_end';
- _stack_top: record end; external name '_stack_top';
- procedure PASCALMAIN; external name 'PASCALMAIN';
- procedure _FPC_haltproc; assembler; nostackframe; public name '_haltproc';
- asm
- .Lhalt:
- b .Lhalt
- end;
- procedure _FPC_start; assembler; nostackframe;
- label _start;
- asm
- .init
- .balign 16
- .long _stack_top // stack top address
- .long _start+1 // 1 Reset
- .long .LDefaultHandler+1 // 2 NMI
- .long .LDefaultHandler+1 // 3 HardFault
- .long .LDefaultHandler+1 // 4 MemManage
- .long .LDefaultHandler+1 // 5 BusFault
- .long .LDefaultHandler+1 // 6 UsageFault
- .long .LDefaultHandler+1 // 7 RESERVED
- .long .LDefaultHandler+1 // 8 RESERVED
- .long .LDefaultHandler+1 // 9 RESERVED
- .long .LDefaultHandler+1 // 10 RESERVED
- .long .LDefaultHandler+1 // 11 SVCall
- .long .LDefaultHandler+1 // 12 Debug Monitor
- .long .LDefaultHandler+1 // 13 RESERVED
- .long .LDefaultHandler+1 // 14 PendSV
- .long .LDefaultHandler+1 // 15 SysTick
- .long .LDefaultHandler+1 // 16 External Interrupt(0)
- .long .LDefaultHandler+1 // 17 External Interrupt(1)
- .long .LDefaultHandler+1 // 18 External Interrupt(2)
- .long .LDefaultHandler+1 // 19 ...
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .long .LDefaultHandler+1
- .globl _start
- .text
- _start:
- // Copy initialized data to ram
- 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
- b PASCALMAIN
- b _FPC_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
- .LDefaultHandlerAddr:
- .long .LDefaultHandler
- // default irq handler just returns
- .LDefaultHandler:
- mov pc,r14
- end;
- end.
|