diff options
author | Tristan Gingold | 2014-03-08 07:04:05 +0100 |
---|---|---|
committer | Tristan Gingold | 2014-03-08 07:04:05 +0100 |
commit | e6001445a14d5e96db78ff56c68d8ae96dec0968 (patch) | |
tree | 77394e40d752c04e5f4ce61b0c868aa2d4b06fa3 /ortho/mcode/ortho_mcode-jit.adb | |
parent | d9bb785009b005cc314f063ae05b8974fd8f4bf2 (diff) | |
download | ghdl-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.adb | 28 |
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; |