summaryrefslogtreecommitdiff
path: root/rtl/embedded
diff options
context:
space:
mode:
authorflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-07-17 08:54:24 +0000
committerflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-07-17 08:54:24 +0000
commit20ef0dbf43a4794602710346450309d61f30815c (patch)
treea7d238f848be1f976a7582ecde64a203f107b160 /rtl/embedded
parent04041d8335f543bcbc4c605d7d372637f5768b0b (diff)
downloadfpc-20ef0dbf43a4794602710346450309d61f30815c.tar.gz
* fix compilation of atmega128 startup code, not working yet
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@18006 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'rtl/embedded')
-rw-r--r--rtl/embedded/avr/atmega128.pp11
-rw-r--r--rtl/embedded/avr/start.inc8
2 files changed, 11 insertions, 8 deletions
diff --git a/rtl/embedded/avr/atmega128.pp b/rtl/embedded/avr/atmega128.pp
index ef9b5a0bad..57b2ba7c68 100644
--- a/rtl/embedded/avr/atmega128.pp
+++ b/rtl/embedded/avr/atmega128.pp
@@ -6,9 +6,13 @@ Register definitions and startup code for ATMEL ATmega128
unit atmega128;
{$goto on}
+{$macro on}
interface
+ {$define DOCALL:=call}
+ {$define DOJMP:=jmp}
+
implementation
procedure PASCALMAIN; external name 'PASCALMAIN';
@@ -17,7 +21,7 @@ unit atmega128;
asm
cli
.Lhalt:
- xjmp .Lhalt
+ jmp .Lhalt
end;
var
@@ -36,7 +40,7 @@ unit atmega128;
.init
.align 16
.globl _start
- b _start
+{ b _start
b .LUndefined_Addr // Undefined Instruction vector
b .LSWI_Addr // Software Interrupt vector
b .LPrefetch_Addr // Prefetch abort vector
@@ -63,7 +67,6 @@ unit atmega128;
.LFIQ_Addr:
ldr r0,.L5
ldr pc,[r0]
-
.L1:
.long Undefined_Handler
.L2:
@@ -76,7 +79,7 @@ unit atmega128;
.long IRQ_Handler
.L6:
.long FIQ_Handler
-
+}
{
all ATMEL MCUs use the same startup code, the details are
governed by defines
diff --git a/rtl/embedded/avr/start.inc b/rtl/embedded/avr/start.inc
index 08cf945400..c39a9f66b3 100644
--- a/rtl/embedded/avr/start.inc
+++ b/rtl/embedded/avr/start.inc
@@ -1,13 +1,12 @@
_start:
clr r1
+{
// load stack pointer
ldi r0,lo8(_stack_top)
out 0x3d,r0
ldi r0,hi8(_stack_top)
out 0x3e,r0
-
-
// copy initialized data from flash to ram
ldr r1,.L_etext
ldr r2,.L_data
@@ -26,8 +25,9 @@
cmp r1,r2
strls r0,[r1],#4
bls .Lzeroloop
+ }
- xcall PASCALMAIN
- xcall _FPC_haltproc
+ call PASCALMAIN
+ call _FPC_haltproc
.text