On 04/16/18 16:34, Michael Brown wrote: > On 16/04/18 15:10, Kinney, Michael D wrote: >> I agree that the opposite use case is a BE CPU >> needing a LE operation. >> >> I think we only need a single lib class and lib >> Instance that does the byte swap and we should >> not use Le or Be in any of the names of the class, >> instance, or APIs. Just "Swap". > > I may have misunderstood, but wouldn't using "Swap" within the API names > effectively encode knowledge of the endianness of the _build_ platform > into the source code? This would prevent the same source code being > built for both little-endian and big-endian CPUs.
Under this scenario, all drivers meant to be portable to both byte orders would have to: - link against both IoLib and IoSwapLib, - determine at device binding time, from CPU endianness and device endianness combined, whether swapping was needed for that device, - call the IoLib or IoSwapLib APIs through wrapper functions, or function pointers. Thanks, Laszlo _______________________________________________ edk2-devel mailing list email@example.com https://lists.01.org/mailman/listinfo/edk2-devel