浏览代码

AVR: Add support for using nostackframe in interrupt routines.

git-svn-id: trunk@42519 -
Jeppe Johansen 6 年之前
父节点
当前提交
f72342ed0e
共有 1 个文件被更改,包括 4 次插入2 次删除
  1. 4 2
      compiler/avr/cgcpu.pas

+ 4 - 2
compiler/avr/cgcpu.pas

@@ -2061,7 +2061,8 @@ unit cgcpu;
       begin
       begin
         if current_procinfo.procdef.isempty then
         if current_procinfo.procdef.isempty then
           exit;
           exit;
-        if po_interrupt in current_procinfo.procdef.procoptions then
+        if (po_interrupt in current_procinfo.procdef.procoptions) and
+          (not nostackframe) then
           begin
           begin
             { check if the framepointer is actually used, this is done here because
             { check if the framepointer is actually used, this is done here because
               we have to know the size of the locals (must be 0), avr does not know
               we have to know the size of the locals (must be 0), avr does not know
@@ -2160,7 +2161,8 @@ unit cgcpu;
           exit;
           exit;
         if po_interrupt in current_procinfo.procdef.procoptions then
         if po_interrupt in current_procinfo.procdef.procoptions then
           begin
           begin
-            if not(current_procinfo.procdef.isempty) then
+            if not(current_procinfo.procdef.isempty) and
+              (not nostackframe) then
               begin
               begin
                 regs:=rg[R_INTREGISTER].used_in_proc;
                 regs:=rg[R_INTREGISTER].used_in_proc;
                 if current_procinfo.framepointer<>NR_NO then
                 if current_procinfo.framepointer<>NR_NO then