summaryrefslogtreecommitdiff
path: root/ortho/mcode/ortho_mcode-jit.adb
diff options
context:
space:
mode:
authorTristan Gingold2014-03-08 07:04:05 +0100
committerTristan Gingold2014-03-08 07:04:05 +0100
commite6001445a14d5e96db78ff56c68d8ae96dec0968 (patch)
tree77394e40d752c04e5f4ce61b0c868aa2d4b06fa3 /ortho/mcode/ortho_mcode-jit.adb
parentd9bb785009b005cc314f063ae05b8974fd8f4bf2 (diff)
downloadghdl-e6001445a14d5e96db78ff56c68d8ae96dec0968.tar.gz
ghdl-e6001445a14d5e96db78ff56c68d8ae96dec0968.tar.bz2
ghdl-e6001445a14d5e96db78ff56c68d8ae96dec0968.zip
Share spec of ortho_nodes, adjust code.
Diffstat (limited to 'ortho/mcode/ortho_mcode-jit.adb')
-rw-r--r--ortho/mcode/ortho_mcode-jit.adb28
1 files changed, 28 insertions, 0 deletions
diff --git a/ortho/mcode/ortho_mcode-jit.adb b/ortho/mcode/ortho_mcode-jit.adb
new file mode 100644
index 0000000..7e845cc
--- /dev/null
+++ b/ortho/mcode/ortho_mcode-jit.adb
@@ -0,0 +1,28 @@
+with Ada.Unchecked_Conversion;
+
+with Ortho_Code.Binary;
+with Binary_File; use Binary_File;
+with Binary_File.Memory;
+
+package body Ortho_Mcode.Jit is
+ -- Set address of non-defined global variables or functions.
+ procedure Set_Address (Decl : O_Dnode; Addr : Address)
+ is
+ use Ortho_Code.Binary;
+ begin
+ Binary_File.Memory.Set_Symbol_Address
+ (Get_Decl_Symbol (Ortho_Code.O_Dnode (Decl)), Addr);
+ end Set_Address;
+
+ -- Get address of a global.
+ function Get_Address (Decl : O_Dnode) return Address
+ is
+ use Ortho_Code.Binary;
+
+ function Conv is new Ada.Unchecked_Conversion
+ (Source => Pc_Type, Target => Address);
+ begin
+ return Conv (Get_Symbol_Vaddr
+ (Get_Decl_Symbol (Ortho_Code.O_Dnode (Decl))));
+ end Get_Address;
+end Ortho_Mcode.Jit;