Jelajahi Sumber

* RiscV: unify stack related functions

florian 6 bulan lalu
induk
melakukan
f8c09568d8
3 mengubah file dengan 20 tambahan dan 33 penghapusan
  1. 15 0
      rtl/riscv/riscv.inc
  2. 2 13
      rtl/riscv32/riscv32.inc
  3. 3 20
      rtl/riscv64/riscv64.inc

+ 15 - 0
rtl/riscv/riscv.inc

@@ -15,6 +15,21 @@
 
  **********************************************************************}
 
+{$IFNDEF INTERNAL_BACKTRACE}
+{$define FPC_SYSTEM_HAS_GET_FRAME}
+function get_frame:pointer;assembler;nostackframe;
+  asm
+    addi a0, fp, 0
+  end;
+{$ENDIF not INTERNAL_BACKTRACE}
+
+
+{$define FPC_SYSTEM_HAS_SPTR}
+Function Sptr : pointer;assembler;nostackframe;
+  asm
+    addi a0, sp, 0
+  end;
+
 {****************************************************************************
                        fpu exception related stuff
 ****************************************************************************}

+ 2 - 13
rtl/riscv32/riscv32.inc

@@ -18,29 +18,18 @@
 { Common RiscV stuff }
 {$I ../riscv/riscv.inc}
 
-{$IFNDEF INTERNAL_BACKTRACE}
-{$define FPC_SYSTEM_HAS_GET_FRAME}
-function get_frame:pointer;assembler;nostackframe;
-  asm
-  end;
-{$ENDIF not INTERNAL_BACKTRACE}
-
 
 {$define FPC_SYSTEM_HAS_GET_CALLER_ADDR}
 function get_caller_addr(framebp:pointer;addr:pointer=nil):pointer;assembler;
   asm
+    lw a0, -4*1(a0)
   end;
 
 
 {$define FPC_SYSTEM_HAS_GET_CALLER_FRAME}
 function get_caller_frame(framebp:pointer;addr:pointer=nil):pointer;assembler;
   asm
-  end;
-
-
-{$define FPC_SYSTEM_HAS_SPTR}
-Function Sptr : pointer;assembler;
-  asm
+    lw a0, -4*2(a0)
   end;
 
 

+ 3 - 20
rtl/riscv64/riscv64.inc

@@ -18,19 +18,6 @@
 { Common RiscV stuff }
 {$I ../riscv/riscv.inc}
 
-{****************************************************************************
-                       stack frame related stuff
-****************************************************************************}
-
-{$IFNDEF INTERNAL_BACKTRACE}
-{$define FPC_SYSTEM_HAS_GET_FRAME}
-function get_frame:pointer;assembler;nostackframe;
-  asm
-    addi a0, fp, 0
-  end;
-{$ENDIF not INTERNAL_BACKTRACE}
-
-
 {$define FPC_SYSTEM_HAS_GET_CALLER_ADDR}
 function get_caller_addr(framebp:pointer;addr:pointer=nil):pointer;assembler;
   asm
@@ -44,13 +31,9 @@ function get_caller_frame(framebp:pointer;addr:pointer=nil):pointer;assembler;
     ld a0, -8*2(a0)
   end;
 
-
-{$define FPC_SYSTEM_HAS_SPTR}
-Function Sptr : pointer;assembler;nostackframe;
-  asm
-    addi a0, sp, 0
-  end;
-
+{****************************************************************************
+                       stack frame related stuff
+****************************************************************************}
 
 {$ifdef VER3_2}
 function InterLockedDecrement (var Target: longint) : longint; assembler; nostackframe;