]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - common/parity.h
code clean up, added some comments to hitag
[proxmark3-svn] / common / parity.h
index 6adfdb306907df9192214e91508d8c57b04bef70..89491646c412438eb30594d71922a73dd8409451 100644 (file)
 
 extern const uint8_t OddByteParity[256];
 
-static inline uint8_t oddparity8(uint8_t bt)
-{
-       return OddByteParity[bt];
-}
+#define oddparity8(x) (OddByteParity[(x)])
 
 
 extern const uint8_t EvenByteParity[256];
 
-static inline uint8_t evenparity8(const uint8_t bt)
-{
-       return EvenByteParity[bt];
+static inline bool /*__attribute__((always_inline))*/ evenparity8(const uint8_t x) {
+#if !defined __i386__ || !defined __GNUC__
+       return EvenByteParity[x];
+#else
+       uint8_t y;
+        __asm( "testb $255, %1\n"
+                "setpo %0\n" : "=r"(y) : "r"(x): );
+       return y;
+#endif
 }
 
 
-static inline uint32_t evenparity32(uint32_t x) 
+static inline uint8_t evenparity32(uint32_t x) 
 {
        x ^= x >> 16;
        x ^= x >> 8;
Impressum, Datenschutz