2
0
Эх сурвалжийг харах

Disabled a_adjust_sp optimized steps for now.
Integrated proper stack frame calculation.
Changed rjmp to jmp in ATMEGA128 interrupt vectors.

git-svn-id: trunk@26964 -

Jeppe Johansen 11 жил өмнө
parent
commit
10522e9779

+ 2 - 2
compiler/avr/cgcpu.pas

@@ -1447,7 +1447,7 @@ unit cgcpu;
         case value of
           0:
             ;
-          -14..-1:
+          {-14..-1:
             begin
               if ((-value) mod 2)<>0 then
                 list.concat(taicpu.op_reg(A_PUSH,NR_R0));
@@ -1458,7 +1458,7 @@ unit cgcpu;
             begin
               for i:=1 to value do
                 list.concat(taicpu.op_reg(A_POP,NR_R0));
-            end;
+            end;}
           else
             begin
               list.concat(taicpu.op_reg_const(A_SUBI,NR_R28,lo(word(-value))));

+ 1 - 1
compiler/avr/cpupi.pas

@@ -63,7 +63,7 @@ unit cpupi;
     function tavrprocinfo.calc_stackframe_size:longint;
       begin
         maxpushedparasize:=align(maxpushedparasize,max(current_settings.alignment.localalignmin,4));
-        result:=0;
+        result:=Align(tg.direction*tg.lasttemp,max(current_settings.alignment.localalignmin,4))+maxpushedparasize;
       end;
 
 

+ 36 - 36
rtl/embedded/avr/atmega128.pp

@@ -577,42 +577,42 @@ unit atmega128;
         .init
         .globl _start
 //        .org 0x00
-        rjmp _start
-        rjmp Int00Handler
-        rjmp Int01Handler
-        rjmp Int02Handler
-        rjmp Int03Handler
-        rjmp Int04Handler
-        rjmp Int05Handler
-        rjmp Int06Handler
-        rjmp Int07Handler
-        rjmp Int08Handler
-        rjmp Int09Handler
-        rjmp Int10Handler
-        rjmp Int11Handler
-        rjmp Int12Handler
-        rjmp Int13Handler
-        rjmp Int14Handler
-        rjmp Int15Handler
-        rjmp Int16Handler
-        rjmp Int17Handler
-        rjmp Int18Handler
-        rjmp Int19Handler
-        rjmp Int20Handler
-        rjmp Int21Handler
-        rjmp Int22Handler
-        rjmp Int23Handler
-        rjmp Int24Handler
-        rjmp Int25Handler
-        rjmp Int26Handler
-        rjmp Int27Handler
-        rjmp Int28Handler
-        rjmp Int29Handler
-        rjmp Int30Handler
-        rjmp Int31Handler
-        rjmp Int32Handler
-        rjmp Int33Handler
-        rjmp Int34Handler
+        jmp _start
+        jmp Int00Handler
+        jmp Int01Handler
+        jmp Int02Handler
+        jmp Int03Handler
+        jmp Int04Handler
+        jmp Int05Handler
+        jmp Int06Handler
+        jmp Int07Handler
+        jmp Int08Handler
+        jmp Int09Handler
+        jmp Int10Handler
+        jmp Int11Handler
+        jmp Int12Handler
+        jmp Int13Handler
+        jmp Int14Handler
+        jmp Int15Handler
+        jmp Int16Handler
+        jmp Int17Handler
+        jmp Int18Handler
+        jmp Int19Handler
+        jmp Int20Handler
+        jmp Int21Handler
+        jmp Int22Handler
+        jmp Int23Handler
+        jmp Int24Handler
+        jmp Int25Handler
+        jmp Int26Handler
+        jmp Int27Handler
+        jmp Int28Handler
+        jmp Int29Handler
+        jmp Int30Handler
+        jmp Int31Handler
+        jmp Int32Handler
+        jmp Int33Handler
+        jmp Int34Handler
         
         {
           all ATMEL MCUs use the same startup code, the details are

+ 1 - 1
rtl/embedded/sysfile.inc

@@ -69,7 +69,7 @@ procedure do_truncate(handle, pos: longint);
 begin
 end;
 
-procedure do_open(var f;p:pchar;flags:longint; pchangeable: boolean);
+procedure do_open(var f;p:PFileTextRecChar;flags:longint; pchangeable: boolean);
 begin
 end;