@@ -1174,6 +1174,60 @@ is
11741174
11751175 -- -----------------------------------------------------------------------
11761176
1177+ procedure Subject_Linux_Image_Alignment (XML_Data : Muxml.XML_Data_Type)
1178+ is
1179+ Linux_DT : constant Muxml.Utils.Matching_Pairs_Type
1180+ := Muxml.Utils.Get_Matching
1181+ (XML_Data => XML_Data,
1182+ Left_XPath => " /system/subjects/subject/memory/memory" ,
1183+ Right_XPath =>
1184+ " /system/memory/memory[@type='subject_devicetree']" ,
1185+ Match_Multiple => True,
1186+ Match => Mutools.Match.Is_Valid_Reference'Access );
1187+ Physical_SB : constant DOM.Core.Node_List
1188+ := McKae.XML.XPath.XIA.XPath_Query
1189+ (N => XML_Data.Doc,
1190+ XPath => " /system/memory/memory[@type='subject_binary']" );
1191+ begin
1192+ for I in 0 .. DOM.Core.Nodes.Length (List => Linux_DT.Left) - 1 loop
1193+ declare
1194+ Subject : constant DOM.Core.Node
1195+ := DOM.Core.Nodes.Parent_Node
1196+ (N => DOM.Core.Nodes.Parent_Node
1197+ (N => DOM.Core.Nodes.Item (List => Linux_DT.Left,
1198+ Index => I)));
1199+ Subj_Name : constant String
1200+ := DOM.Core.Elements.Get_Attribute
1201+ (Elem => Subject,
1202+ Name => " name" );
1203+ Subj_Mem : constant DOM.Core.Node_List
1204+ := McKae.XML.XPath.XIA.XPath_Query
1205+ (N => Subject,
1206+ XPath => " memory/memory" );
1207+ Linux_SB : constant Muxml.Utils.Matching_Pairs_Type
1208+ := Muxml.Utils.Get_Matching
1209+ (Left_Nodes => Subj_Mem,
1210+ Right_Nodes => Physical_SB,
1211+ Match_Multiple => True,
1212+ Match => Mutools.Match.Is_Valid_Reference'Access );
1213+ begin
1214+ Mulog.Log (Msg => " Checking subject binary alignment of Linux "
1215+ & " subject '" & Subj_Name & " '" );
1216+
1217+ Check_Attribute (Nodes => Linux_SB.Left,
1218+ Node_Type => " logical memory" ,
1219+ Attr => " virtualAddress" ,
1220+ Name_Attr => " logical" ,
1221+ Test => Mod_Equal_Zero'Access ,
1222+ B => 16#0020_0000# ,
1223+ Error_Msg => " is not 2MB aligned for Linux "
1224+ & " subject '" & Subj_Name & " '" );
1225+ end ;
1226+ end loop ;
1227+ end Subject_Linux_Image_Alignment ;
1228+
1229+ -- -----------------------------------------------------------------------
1230+
11771231 procedure Subject_MSR_Store_Mappings (XML_Data : Muxml.XML_Data_Type)
11781232 is
11791233 begin
0 commit comments