mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 16:10:07 +02:00
* fix compilation of atmega128 startup code, not working yet
git-svn-id: trunk@18006 -
This commit is contained in:
parent
840b158eb8
commit
ac17ee8acb
@ -6,9 +6,13 @@ Register definitions and startup code for ATMEL ATmega128
|
|||||||
unit atmega128;
|
unit atmega128;
|
||||||
|
|
||||||
{$goto on}
|
{$goto on}
|
||||||
|
{$macro on}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
|
{$define DOCALL:=call}
|
||||||
|
{$define DOJMP:=jmp}
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
procedure PASCALMAIN; external name 'PASCALMAIN';
|
procedure PASCALMAIN; external name 'PASCALMAIN';
|
||||||
@ -17,7 +21,7 @@ unit atmega128;
|
|||||||
asm
|
asm
|
||||||
cli
|
cli
|
||||||
.Lhalt:
|
.Lhalt:
|
||||||
xjmp .Lhalt
|
jmp .Lhalt
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
@ -36,7 +40,7 @@ unit atmega128;
|
|||||||
.init
|
.init
|
||||||
.align 16
|
.align 16
|
||||||
.globl _start
|
.globl _start
|
||||||
b _start
|
{ b _start
|
||||||
b .LUndefined_Addr // Undefined Instruction vector
|
b .LUndefined_Addr // Undefined Instruction vector
|
||||||
b .LSWI_Addr // Software Interrupt vector
|
b .LSWI_Addr // Software Interrupt vector
|
||||||
b .LPrefetch_Addr // Prefetch abort vector
|
b .LPrefetch_Addr // Prefetch abort vector
|
||||||
@ -63,7 +67,6 @@ unit atmega128;
|
|||||||
.LFIQ_Addr:
|
.LFIQ_Addr:
|
||||||
ldr r0,.L5
|
ldr r0,.L5
|
||||||
ldr pc,[r0]
|
ldr pc,[r0]
|
||||||
|
|
||||||
.L1:
|
.L1:
|
||||||
.long Undefined_Handler
|
.long Undefined_Handler
|
||||||
.L2:
|
.L2:
|
||||||
@ -76,7 +79,7 @@ unit atmega128;
|
|||||||
.long IRQ_Handler
|
.long IRQ_Handler
|
||||||
.L6:
|
.L6:
|
||||||
.long FIQ_Handler
|
.long FIQ_Handler
|
||||||
|
}
|
||||||
{
|
{
|
||||||
all ATMEL MCUs use the same startup code, the details are
|
all ATMEL MCUs use the same startup code, the details are
|
||||||
governed by defines
|
governed by defines
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
_start:
|
_start:
|
||||||
clr r1
|
clr r1
|
||||||
|
{
|
||||||
// load stack pointer
|
// load stack pointer
|
||||||
ldi r0,lo8(_stack_top)
|
ldi r0,lo8(_stack_top)
|
||||||
out 0x3d,r0
|
out 0x3d,r0
|
||||||
ldi r0,hi8(_stack_top)
|
ldi r0,hi8(_stack_top)
|
||||||
out 0x3e,r0
|
out 0x3e,r0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// copy initialized data from flash to ram
|
// copy initialized data from flash to ram
|
||||||
ldr r1,.L_etext
|
ldr r1,.L_etext
|
||||||
ldr r2,.L_data
|
ldr r2,.L_data
|
||||||
@ -26,8 +25,9 @@
|
|||||||
cmp r1,r2
|
cmp r1,r2
|
||||||
strls r0,[r1],#4
|
strls r0,[r1],#4
|
||||||
bls .Lzeroloop
|
bls .Lzeroloop
|
||||||
|
}
|
||||||
|
|
||||||
xcall PASCALMAIN
|
call PASCALMAIN
|
||||||
xcall _FPC_haltproc
|
call _FPC_haltproc
|
||||||
.text
|
.text
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user