Commit 00164276 authored by Thanassis Tsiodras's avatar Thanassis Tsiodras

Merge remote-tracking branch 'origin/master'

parents aa931f2f d078c548
......@@ -112,4 +112,12 @@ property set Deployment_Properties is
Priority_Range: range of aadlinteger
applies to (processor, virtual processor);
-- properties related to the setting of custom environment variables per deployment targe
-- since AADL doesn't appear to have the notion of a board (e.g. GR712) we will for now
-- add multiple "pseudo-CPUs" (e.g. gr712, gr740, etc) and have a per-CPU EnvVar settings
-- (so that e.g. RTEMS_MAKEFILE_PATH is set properly)
EnvVars: aadlstring
applies to (processor);
end Deployment_Properties;
......@@ -67,6 +67,11 @@ property set Deployment is
applies to (device);
-- List execution platforms supported by a particular driver
USER_ENV: aadlstring applies to (processor);
-- Additional configuration parameters passed as environment
-- variables as part of the build phase. These env. variables are
-- passed in the generated makefiles.
Runtime : type enumeration
(PolyORB_HI_C,
PolyORB_HI_Ada,
......
......@@ -208,12 +208,12 @@ package body Ocarina.BE_AADL.Namespaces is
then
Write_Eol;
Print_Token (T_Public);
Write_Eol;
end if;
-- Public part
if Has_Public then
List_Node := First_Node (Declarations (Node));
while Present (List_Node) loop
......
......@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 2010-2015 ESA & ISAE. --
-- Copyright (C) 2010-2017 ESA & ISAE. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify under --
-- terms of the GNU General Public License as published by the Free Soft- --
......@@ -207,7 +207,7 @@ package body Ocarina.Backends.Cheddar.Mapping is
Make_Defining_Identifier (Get_String_Name ("quantum"));
Value : constant Node_Id :=
Make_Literal
(XV.New_Numeric_Value (To_Milliseconds (Quantum), 1, 10));
(XV.New_Numeric_Value (To_Microseconds (Quantum), 1, 10));
begin
Append_Node_To_List
(Make_Assignement (Name, Value),
......@@ -327,7 +327,7 @@ package body Ocarina.Backends.Cheddar.Mapping is
K :=
Make_Literal
(XV.New_Numeric_Value
(To_Milliseconds
(To_Microseconds
(Get_Execution_Time
(Corresponding_Instance
(Item
......@@ -506,7 +506,7 @@ package body Ocarina.Backends.Cheddar.Mapping is
P :=
Map_To_XML_Node
("capacity",
To_Milliseconds (Get_Execution_Time (E) (1)));
To_Microseconds (Get_Execution_Time (E) (1)));
end if;
Append_Node_To_List (P, XTN.Subitems (N));
......@@ -514,7 +514,7 @@ package body Ocarina.Backends.Cheddar.Mapping is
P :=
Map_To_XML_Node
("start_time",
To_Milliseconds (Get_Thread_First_Dispatch_Time (E)));
To_Microseconds (Get_Thread_First_Dispatch_Time (E)));
Append_Node_To_List (P, XTN.Subitems (N));
-- policy: computed from the POSIX_Scheduling_Policy properties
......@@ -528,7 +528,7 @@ package body Ocarina.Backends.Cheddar.Mapping is
P :=
Map_To_XML_Node
("deadline",
To_Milliseconds (Get_Thread_Deadline (E)));
To_Microseconds (Get_Thread_Deadline (E)));
Append_Node_To_List (P, XTN.Subitems (N));
end if;
......@@ -554,7 +554,7 @@ package body Ocarina.Backends.Cheddar.Mapping is
if Dispatch = Thread_Periodic or else Dispatch = Thread_Sporadic then
-- period: computed from Period property, XXX check units
P :=
Map_To_XML_Node ("period", To_Milliseconds (Get_Thread_Period (E)));
Map_To_XML_Node ("period", To_Microseconds (Get_Thread_Period (E)));
Append_Node_To_List (P, XTN.Subitems (N));
end if;
......
......@@ -1585,6 +1585,19 @@ package body Ocarina.Backends.Build_Utils is
M.Use_Scade,
M.Scade_Directory);
-- Add user-defined environment variable
declare
Env : constant Name_Id := Get_USER_ENV
(Get_Bound_Processor (E));
begin
if Env /= No_Name then
Write_Str ("export ");
Write_Name (Env);
Write_Eol;
end if;
end;
-- Add rule to compile the C files, if any
Write_Eol;
......
......@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 2008-2009 Telecom ParisTech, 2010-2016 ESA & ISAE. --
-- Copyright (C) 2008-2009 Telecom ParisTech, 2010-2017 ESA & ISAE. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify under --
-- terms of the GNU General Public License as published by the Free Soft- --
......@@ -133,7 +133,8 @@ package body Ocarina.Backends.Properties is
Thread_Deadline : Name_Id;
Thread_Dispatch_Protocol : Name_Id;
Thread_Cheddar_Priority : Name_Id;
Thread_Stack_Size : Name_Id;
Source_Stack_Size : Name_Id;
Stack_Size : Name_Id;
Activate_Entrypoint : Name_Id;
Activate_Entrypoint_Source_Text : Name_Id;
Initialize_Entrypoint : Name_Id;
......@@ -189,8 +190,9 @@ package body Ocarina.Backends.Properties is
------------------------------------
Ada_Runtime : Name_Id;
User_CFLAGS : Name_Id;
User_LDFLAGS : Name_Id;
USER_CFLAGS : Name_Id;
USER_LDFLAGS : Name_Id;
USER_ENV : Name_Id;
Location : Name_Id;
Execution_Platform : Name_Id;
Scheduler_Quantum : Name_Id;
......@@ -1977,10 +1979,15 @@ package body Ocarina.Backends.Properties is
---------------------------
function Get_Thread_Stack_Size (T : Node_Id) return Size_Type is
begin
pragma Assert (Is_Thread (T));
return (Get_Size_Property_Value (T, Thread_Stack_Size));
Source_Stack_Size_Value : constant Size_Type :=
Get_Size_Property_Value (T, Source_Stack_Size);
begin
if Source_Stack_Size_Value = Null_Size then
return Get_Size_Property_Value (T, Stack_Size);
else
return Source_Stack_Size_Value;
end if;
end Get_Thread_Stack_Size;
------------------------------------
......@@ -2518,6 +2525,17 @@ package body Ocarina.Backends.Properties is
return Get_String_Property (P, USER_LDFLAGS);
end Get_USER_LDFLAGS;
------------------
-- Get_USER_ENV --
------------------
function Get_USER_ENV (P : Node_Id) return Name_Id is
pragma Assert
(AINU.Is_Processor (P) or else AINU.Is_Virtual_Processor (P));
begin
return Get_String_Property (P, USER_ENV);
end Get_USER_ENV;
-----------------------
-- Get_Transport_API --
-----------------------
......@@ -2892,7 +2910,8 @@ package body Ocarina.Backends.Properties is
Thread_Dispatch_Protocol := Get_String_Name ("dispatch_protocol");
Thread_Cheddar_Priority :=
Get_String_Name ("cheddar_properties::fixed_priority");
Thread_Stack_Size := Get_String_Name ("source_stack_size");
Source_Stack_Size := Get_String_Name ("source_stack_size");
Stack_Size := Get_String_Name ("stack_size");
Port_Timing := Get_String_Name ("timing");
Port_Timing_Sampled_Name := Get_String_Name ("sampled");
......@@ -2920,6 +2939,7 @@ package body Ocarina.Backends.Properties is
Ada_Runtime := Get_String_Name ("deployment::ada_runtime");
USER_CFLAGS := Get_String_Name ("deployment::user_cflags");
USER_LDFLAGS := Get_String_Name ("deployment::user_ldflags");
USER_ENV := Get_String_Name ("deployment::user_env");
Location := Get_String_Name ("deployment::location");
Execution_Platform := Get_String_Name ("deployment::execution_platform");
Scheduler_Quantum := Get_String_Name ("scheduler_quantum");
......
......@@ -581,7 +581,10 @@ package Ocarina.Backends.Properties is
function Get_USER_CFLAGS (P : Node_Id) return Name_Id;
function Get_USER_LDFLAGS (P : Node_Id) return Name_Id;
-- Return USER_CFLAGS and USER_LDFLGAS property for processor P
-- Return USER_CFLAGS and USER_LDFLAGS property for processor P
function Get_USER_ENV (P : Node_Id) return Name_Id;
-- Return USER_ENV property
function Get_Location (P : Node_Id) return Name_Id;
-- Return the location of the processor or device P. No_Name is
......
......@@ -2871,6 +2871,15 @@ package body Ocarina.Backends.Utils is
return Unsigned_Long_Long (To_Seconds (S) * 1_000.0);
end To_Milliseconds;
---------------------
-- To_Microseconds --
---------------------
function To_Microseconds (S : Time_Type) return Unsigned_Long_Long is
begin
return Unsigned_Long_Long (To_Seconds (S) * 1_000_000.0);
end To_Microseconds;
---------------------
-- To_Nanoseconds --
---------------------
......
......@@ -423,6 +423,7 @@ package Ocarina.Backends.Utils is
function To_Seconds (S : Time_Type) return Long_Double;
function To_Milliseconds (S : Time_Type) return Unsigned_Long_Long;
function To_Microseconds (S : Time_Type) return Unsigned_Long_Long;
function To_Nanoseconds (S : Time_Type) return Unsigned_Long_Long;
function Get_Accessed_Data (Data_Access : Node_Id) return Node_Id;
......
......@@ -389,6 +389,7 @@ package body Ocarina.Backends.PO_HI_Ada.Activity is
procedure Visit_Process_Instance (E : Node_Id);
procedure Visit_Thread_Instance (E : Node_Id);
procedure Visit_Device_Instance (E : Node_Id);
procedure Visit_Subcomponents_Of is new Visit_Subcomponents_Of_G (Visit);
procedure Cyclic_Task_Instantiation_Formals
(E : Node_Id;
......@@ -1188,22 +1189,12 @@ package body Ocarina.Backends.PO_HI_Ada.Activity is
---------------------------
procedure Visit_System_Instance (E : Node_Id) is
S : Node_Id;
begin
Push_Entity (Ada_Root);
-- Visit all the subcomponents of the system
if not AINU.Is_Empty (Subcomponents (E)) then
S := First_Node (Subcomponents (E));
while Present (S) loop
-- Visit the component instance corresponding to the
-- subcomponent S.
Visit (Corresponding_Instance (S));
S := Next_Node (S);
end loop;
end if;
Visit_Subcomponents_Of (E);
Pop_Entity; -- Ada_Root
end Visit_System_Instance;
......@@ -1532,6 +1523,7 @@ package body Ocarina.Backends.PO_HI_Ada.Activity is
procedure Visit_Process_Instance (E : Node_Id);
procedure Visit_Thread_Instance (E : Node_Id);
procedure Visit_Device_Instance (E : Node_Id);
procedure Visit_Subcomponents_Of is new Visit_Subcomponents_Of_G (Visit);
function Task_Job_Body (E : Node_Id) return Node_Id;
-- Creates the parameterless subprogram body that does the
......@@ -4306,16 +4298,15 @@ package body Ocarina.Backends.PO_HI_Ada.Activity is
procedure Visit_Device_Instance (E : Node_Id) is
Implementation : constant Node_Id := Get_Implementation (E);
S : Node_Id;
begin
if Implementation /= No_Node then
if not AAU.Is_Empty (AAN.Subcomponents (Implementation)) then
S := First_Node (Subcomponents (Implementation));
while Present (S) loop
Visit_Component_Instance (Corresponding_Instance (S));
S := Next_Node (S);
end loop;
end if;
-- A device may be "implemented" using an abstract
-- component, representing its driver. We iterate on its
-- subcomponents to attach specific threads associated.
Visit_Subcomponents_Of (Implementation);
end if;
end Visit_Device_Instance;
......@@ -4478,22 +4469,12 @@ package body Ocarina.Backends.PO_HI_Ada.Activity is
---------------------------
procedure Visit_System_Instance (E : Node_Id) is
S : Node_Id;
begin
Push_Entity (Ada_Root);
-- Visit all the subcomponents of the system
if not AINU.Is_Empty (Subcomponents (E)) then
S := First_Node (Subcomponents (E));
while Present (S) loop
-- Visit the component instance corresponding to the
-- subcomponent S.
Visit (Corresponding_Instance (S));
S := Next_Node (S);
end loop;
end if;
Visit_Subcomponents_Of (E);
Pop_Entity; -- Ada_Root
end Visit_System_Instance;
......
......@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 2006-2009 Telecom ParisTech, 2010-2015 ESA & ISAE. --
-- Copyright (C) 2006-2009 Telecom ParisTech, 2010-2017 ESA & ISAE. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify under --
-- terms of the GNU General Public License as published by the Free Soft- --
......@@ -68,6 +68,7 @@ package body Ocarina.Backends.PO_HI_Ada.Deployment is
------------------
package body Package_Spec is
procedure Visit_Subcomponents_Of is new Visit_Subcomponents_Of_G (Visit);
procedure Visit_Architecture_Instance (E : Node_Id);
procedure Visit_Component_Instance (E : Node_Id);
......@@ -1410,22 +1411,11 @@ package body Ocarina.Backends.PO_HI_Ada.Deployment is
procedure Visit_System_Instance (E : Node_Id) is
A : constant Node_Id := Map_Distributed_Application (E);
S : Node_Id;
begin
Push_Entity (A);
-- Visit all the subcomponents of the system
if not AAU.Is_Empty (Subcomponents (E)) then
S := First_Node (Subcomponents (E));
while Present (S) loop
-- Visit the component instance corresponding to the
-- subcomponent S.
Visit (Corresponding_Instance (S));
S := Next_Node (S);
end loop;
end if;
Visit_Subcomponents_Of (E);
Pop_Entity; -- A
end Visit_System_Instance;
......
......@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 2006-2009 Telecom ParisTech, 2010-2015 ESA & ISAE. --
-- Copyright (C) 2006-2009 Telecom ParisTech, 2010-2017 ESA & ISAE. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify under --
-- terms of the GNU General Public License as published by the Free Soft- --
......@@ -72,6 +72,8 @@ package body Ocarina.Backends.PO_HI_Ada.Main is
procedure Visit_Thread_Instance (E : Node_Id);
procedure Visit_Device_Instance (E : Node_Id);
procedure Visit_Subcomponents_Of is new Visit_Subcomponents_Of_G (Visit);
Has_Hybrid_Threads : Boolean := False;
-----------
......@@ -203,7 +205,6 @@ package body Ocarina.Backends.PO_HI_Ada.Main is
(ADN.Deployment_Node (Backend_Node (Identifier (E))));
P : constant Node_Id := ADN.Entity (U);
N : Node_Id;
S : Node_Id;
Transport_API : constant Supported_Transport_APIs :=
Fetch_Transport_API (E);
The_System : constant Node_Id :=
......@@ -232,16 +233,7 @@ package body Ocarina.Backends.PO_HI_Ada.Main is
-- Visit all the subcomponents of the process
if not AINU.Is_Empty (Subcomponents (E)) then
S := First_Node (Subcomponents (E));
while Present (S) loop
-- Visit the component instance corresponding to the
-- subcomponent S.
Visit (Corresponding_Instance (S));
S := Next_Node (S);
end loop;
end if;
Visit_Subcomponents_Of (E);
if Has_Hybrid_Threads then
-- Unblock the hybrid task driver
......@@ -321,22 +313,10 @@ package body Ocarina.Backends.PO_HI_Ada.Main is
---------------------------
procedure Visit_System_Instance (E : Node_Id) is
S : Node_Id;
begin
Push_Entity (Ada_Root);
-- Visit all the subcomponents of the system
if not AINU.Is_Empty (Subcomponents (E)) then
S := First_Node (Subcomponents (E));
while Present (S) loop
-- Visit the component instance corresponding to the
-- subcomponent S.
Visit (Corresponding_Instance (S));
S := Next_Node (S);
end loop;
end if;
Visit_Subcomponents_Of (E);
Pop_Entity; -- Ada_Root
end Visit_System_Instance;
......
......@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 2006-2009 Telecom ParisTech, 2010-2015 ESA & ISAE. --
-- Copyright (C) 2006-2009 Telecom ParisTech, 2010-2017 ESA & ISAE. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify under --
-- terms of the GNU General Public License as published by the Free Soft- --
......@@ -107,6 +107,7 @@ package body Ocarina.Backends.PO_HI_Ada.Marshallers is
procedure Visit_Thread_Instance (E : Node_Id);
procedure Visit_Subprogram_Instance (E : Node_Id);
procedure Visit_Data_Instance (E : Node_Id);
procedure Visit_Subcomponents_Of is new Visit_Subcomponents_Of_G (Visit);
function Marshall_Spec (E : Node_Id) return Node_Id;
-- Creates a spec for a Marshall procedure for a data type
......@@ -324,7 +325,6 @@ package body Ocarina.Backends.PO_HI_Ada.Marshallers is
ADN.Distributed_Application_Unit
(ADN.Deployment_Node (Backend_Node (Identifier (E))));
P : constant Node_Id := ADN.Entity (U);
S : Node_Id;
begin
Push_Entity (P);
Push_Entity (U);
......@@ -337,16 +337,7 @@ package body Ocarina.Backends.PO_HI_Ada.Marshallers is
-- Visit all the subcomponents of the process
if not AAU.Is_Empty (Subcomponents (E)) then
S := First_Node (Subcomponents (E));
while Present (S) loop
-- Visit the component instance corresponding to the
-- subcomponent S.
Visit (Corresponding_Instance (S));
S := Next_Node (S);
end loop;
end if;
Visit_Subcomponents_Of (E);
-- Unmark all the marked types
......@@ -390,22 +381,12 @@ package body Ocarina.Backends.PO_HI_Ada.Marshallers is
---------------------------
procedure Visit_System_Instance (E : Node_Id) is
S : Node_Id;
begin
Push_Entity (Ada_Root);
-- Visit all the subcomponents of the system
if not AAU.Is_Empty (Subcomponents (E)) then
S := First_Node (Subcomponents (E));
while Present (S) loop
-- Visit the component instance corresponding to the
-- subcomponent S.
Visit (Corresponding_Instance (S));
S := Next_Node (S);
end loop;
end if;
Visit_Subcomponents_Of (E);
Pop_Entity; -- Ada_Root
end Visit_System_Instance;
......@@ -502,6 +483,7 @@ package body Ocarina.Backends.PO_HI_Ada.Marshallers is
procedure Visit_Thread_Instance (E : Node_Id);
procedure Visit_Subprogram_Instance (E : Node_Id);
procedure Visit_Data_Instance (E : Node_Id);
procedure Visit_Subcomponents_Of is new Visit_Subcomponents_Of_G (Visit);
function Marshall_Implementation (E : Node_Id) return Node_Id;
-- Creates an implementation for a Marshall procedure
......@@ -1005,7 +987,6 @@ package body Ocarina.Backends.PO_HI_Ada.Marshallers is
ADN.Distributed_Application_Unit
(ADN.Deployment_Node (Backend_Node (Identifier (E))));
P : constant Node_Id := ADN.Entity (U);
S : Node_Id;
begin
Push_Entity (P);
Push_Entity (U);
......@@ -1018,16 +999,7 @@ package body Ocarina.Backends.PO_HI_Ada.Marshallers is
-- Visit all the subcomponents of the process
if not AAU.Is_Empty (Subcomponents (E)) then
S := First_Node (Subcomponents (E));
while Present (S) loop
-- Visit the component instance corresponding to the
-- subcomponent S.
Visit (Corresponding_Instance (S));
S := Next_Node (S);
end loop;
end if;
Visit_Subcomponents_Of (E);
-- Unmark all the marked types
......@@ -1071,23 +1043,12 @@ package body Ocarina.Backends.PO_HI_Ada.Marshallers is
---------------------------
procedure Visit_System_Instance (E : Node_Id) is
S : Node_Id;
begin
Push_Entity (Ada_Root);
-- Visit all the subcomponents of the system
if not AAU.Is_Empty (Subcomponents (E)) then
S := First_Node (Subcomponents (E));
while Present (S) loop
-- Visit the component instance corresponding to the
-- subcomponent S.
Visit (Corresponding_Instance (S));
S := Next_Node (S);
end loop;
end if;
Visit_Subcomponents_Of (E);
Pop_Entity; -- Ada_Root
end Visit_System_Instance;
......
......@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 2006-2009 Telecom ParisTech, 2010-2015 ESA & ISAE. --
-- Copyright (C) 2006-2009 Telecom ParisTech, 2010-2017 ESA & ISAE. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify under --
-- terms of the GNU General Public License as published by the Free Soft- --
......@@ -77,6 +77,7 @@ package body Ocarina.Backends.PO_HI_Ada.Naming is
procedure Visit_Component_Instance (E : Node_Id);
procedure Visit_System_Instance (E : Node_Id);
procedure Visit_Process_Instance (E : Node_Id);
procedure Visit_Subcomponents_Of is new Visit_Subcomponents_Of_G (Visit);
function Added_Internal_Name
(P : Node_Id;
......@@ -573,7 +574,6 @@ package body Ocarina.Backends.PO_HI_Ada.Naming is
procedure Visit_System_Instance (E : Node_Id) is
C : Node_Id;
S : Node_Id;
begin
Push_Entity (Ada_Root);
......@@ -591,16 +591,7 @@ package body Ocarina.Backends.PO_HI_Ada.Naming is
-- Visit all the subcomponents of the system
if not AAU.Is_Empty (Subcomponents (E)) then
S := First_Node (Subcomponents (E));
while Present (S) loop
-- Visit the component instance corresponding to the
-- subcomponent S.
Visit (Corresponding_Instance (S));
S := Next_Node (S);
end loop;
end if;
Visit_Subcomponents_Of (E);
Pop_Entity; -- Ada_Root
end Visit_System_Instance;
......
......@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 2006-2009 Telecom ParisTech, 2010-2015 ESA & ISAE. --
-- Copyright (C) 2006-2009 Telecom ParisTech, 2010-2017 ESA & ISAE. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify under --
-- terms of the GNU General Public License as published by the Free Soft- --
......@@ -72,6 +72,7 @@ package body Ocarina.Backends.PO_HI_Ada.Subprograms is
procedure Visit_Subprogram_Instance (E : Node_Id);
procedure Visit_Data_Instance (E : Node_Id);
procedure Visit_Device_Instance (E : Node_Id);
procedure Visit_Subcomponents_Of is new Visit_Subcomponents_Of_G (Visit);
function Put_Value_Spec (E : Node_Id) return Node_Id;
function Get_Value_Spec (E : Node_Id) return Node_Id;
......@@ -336,16 +337,7 @@ package body Ocarina.Backends.PO_HI_Ada.Subprograms is
-- Visit all the subcomponents of the process
if not AAU.Is_Empty (Subcomponents (E)) then
S := First_Node (Subcomponents (E));
while Present (S) loop
-- Visit the component instance corresponding to the
-- subcomponent S.
Visit (Corresponding_Instance (S));
S := Next_Node (S);
end loop;
end if;
Visit_Subcomponents_Of (E);
-- Visit all devices attached to the parent system that
-- share the same processor as process E.
......@@ -517,22 +509,12 @@ package body Ocarina.Backends.PO_HI_Ada.Subprograms is
---------------------------
procedure Visit_System_Instance (E : Node_Id) is
S : Node_Id;
begin
Push_Entity (Ada_Root);
-- Visit all the subcomponents of the system
if not AAU.Is_Empty (Subcomponents (E)) then
S := First_Node (Subcomponents (E));
while Present (S) loop
-- Visit the component instance corresponding to the
-- subcomponent S.
Visit (Corresponding_Instance (S));
S := Next_Node (S);
end loop;
end if;
Visit_Subcomponents_Of (E);
Pop_Entity; -- Ada_Root
end Visit_System_Instance;
......@@ -585,6 +567,7 @@ package body Ocarina.Backends.PO_HI_Ada.Subprograms is
procedure Visit_Subprogram_Instance (E : Node_Id);
procedure Visit_Data_Instance (E : Node_Id);
procedure Visit_Device_Instance (E : Node_Id);
procedure Visit_Subcomponents_Of is new Visit_Subcomponents_Of_G (Visit);
function Put_Value_Body (E : Node_Id) return Node_Id;
function Get_Value_Body (E : Node_Id) return Node_Id;
......@@ -951,16 +934,7 @@ package body Ocarina.Backends.PO_HI_Ada.Subprograms is
-- Visit all the subcomponents of the process
if not AAU.Is_Empty (Subcomponents (E)) then
S := First_Node (Subcomponents (E));
while Present (S) loop
-- Visit the component instance corresponding to the
-- subcomponent S.
Visit (Corresponding_Instance (S));
S := Next_Node (S);
end loop;
end if;
Visit_Subcomponents_Of (E);
-- Visit all devices attached to the parent system that
-- share the same processor as process E.
......@@ -1053,22 +1027,12 @@ package body Ocarina.Backends.PO_HI_Ada.Subprograms is
---------------------------
procedure Visit_System_Instance (E : Node_Id) is
S : Node_Id;
begin
Push_Entity (Ada_Root);
-- Visit all the subcomponents of the system
if not AAU.Is_Empty (Subcomponents (E)) then
S := First_Node (Subcomponents (E));
while Present (S) loop
-- Visit the component instance corresponding to