s32 Xil_TestIO16(u16 *Addr, s32 Length, u16 Value, s32 Kind, s32 Swap) { u16 *TempAddr16; u16 ValueIn = 0U; s32 Index; TempAddr16 = Addr; Xil_AssertNonvoid(TempAddr16 != NULL); for (Index = 0; Index < Length; Index++) { switch (Kind) { case XIL_TESTIO_LE: Xil_Out16LE((INTPTR)TempAddr16, Value); break; case XIL_TESTIO_BE: Xil_Out16BE((INTPTR)TempAddr16, Value); break; default: Xil_Out16((INTPTR)TempAddr16, Value); break; } ValueIn = Xil_In16((INTPTR)TempAddr16); if ((Kind != 0) && (Swap != 0)) { ValueIn = Swap16(ValueIn); } if (Value != ValueIn) { return -1; } /* second round */ Xil_Out16((INTPTR)TempAddr16, Value); switch (Kind) { case XIL_TESTIO_LE: ValueIn = Xil_In16LE((INTPTR)TempAddr16); break; case XIL_TESTIO_BE: ValueIn = Xil_In16BE((INTPTR)TempAddr16); break; default: ValueIn = Xil_In16((INTPTR)TempAddr16); break; } if ((Kind != 0) && (Swap != 0)) { ValueIn = Swap16(ValueIn); } if (Value != ValueIn) { return -1; } TempAddr16 += sizeof(u16); } return 0; }
int Xil_TestIO16(u16 *Addr, int Len, u16 Value, int Kind, int Swap) { u16 ValueIn; int Index; for (Index = 0; Index < Len; Index++) { switch (Kind) { case XIL_TESTIO_LE: Xil_Out16LE((u32)Addr, Value); break; case XIL_TESTIO_BE: Xil_Out16BE((u32)Addr, Value); break; default: Xil_Out16((u32)Addr, Value); break; } ValueIn = Xil_In16((u32)Addr); if (Kind && Swap) ValueIn = Swap16(ValueIn); if (Value != ValueIn) { return -1; } /* second round */ Xil_Out16((u32)Addr, Value); switch (Kind) { case XIL_TESTIO_LE: ValueIn = Xil_In16LE((u32)Addr); break; case XIL_TESTIO_BE: ValueIn = Xil_In16BE((u32)Addr); break; default: ValueIn = Xil_In16((u32)Addr); break; } if (Kind && Swap) ValueIn = Swap16(ValueIn); if (Value != ValueIn) { return -1; } Addr++; } return 0; }