+/**\r
+ Function to test if two Generic Timer Block Frame Info structures have the\r
+ same frame number.\r
+\r
+ @param [in] Frame1 Pointer to the first GT Block Frame Info\r
+ structure.\r
+ @param [in] Frame2 Pointer to the second GT Block Frame Info\r
+ structure.\r
+ @param [in] Index1 Index of Frame1 in the shared GT Block Frame\r
+ Information List.\r
+ @param [in] Index2 Index of Frame2 in the shared GT Block Frame\r
+ Information List.\r
+\r
+ @retval TRUE Frame1 and Frame2 have the same frame number.\r
+ @return FALSE Frame1 and Frame2 have different frame numbers.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+IsGtFrameNumberEqual (\r
+ IN CONST VOID * Frame1,\r
+ IN CONST VOID * Frame2,\r
+ IN UINTN Index1,\r
+ IN UINTN Index2\r
+ )\r
+{\r
+ UINT8 FrameNumber1;\r
+ UINT8 FrameNumber2;\r
+\r
+ ASSERT ((Frame1 != NULL) && (Frame2 != NULL));\r
+\r
+ FrameNumber1 = ((CM_ARM_GTBLOCK_TIMER_FRAME_INFO*)Frame1)->FrameNumber;\r
+ FrameNumber2 = ((CM_ARM_GTBLOCK_TIMER_FRAME_INFO*)Frame2)->FrameNumber;\r
+\r
+ if (FrameNumber1 == FrameNumber2) {\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
+ "ERROR: GTDT: GT Block Frame Info Structures %d and %d have the same " \\r
+ "frame number: 0x%x.\n",\r
+ Index1,\r
+ Index2,\r
+ FrameNumber1\r
+ ));\r
+ return TRUE;\r
+ }\r
+\r
+ return FALSE;\r
+}\r
+\r