Browse Source

* fix compilation of atmega128 startup code, not working yet

git-svn-id: trunk@18006 -
florian 14 years ago
parent
commit
ac17ee8acb
2 changed files with 11 additions and 8 deletions
  1. 7 4
      rtl/embedded/avr/atmega128.pp
  2. 4 4
      rtl/embedded/avr/start.inc

+ 7 - 4
rtl/embedded/avr/atmega128.pp

@@ -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

+ 4 - 4
rtl/embedded/avr/start.inc

@@ -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
-        xcall _FPC_haltproc
+        call PASCALMAIN
+        call _FPC_haltproc
         .text
         .text