14b6da826SThomas Huth /* 24b6da826SThomas Huth * errata functions 34b6da826SThomas Huth * 44b6da826SThomas Huth * This code is free software; you can redistribute it and/or modify it 54b6da826SThomas Huth * under the terms of the GNU Library General Public License version 2. 64b6da826SThomas Huth */ 7218bb0d4SAndrew Jones #ifndef _ERRATA_H_ 8218bb0d4SAndrew Jones #define _ERRATA_H_ 9*35145f14SAndrew Jones #include "config.h" 10*35145f14SAndrew Jones 11*35145f14SAndrew Jones #ifndef CONFIG_ERRATA_FORCE 12*35145f14SAndrew Jones #define CONFIG_ERRATA_FORCE 0 13*35145f14SAndrew Jones #endif 14218bb0d4SAndrew Jones 15218bb0d4SAndrew Jones #define _ERRATA(erratum) errata("ERRATA_" # erratum) 16218bb0d4SAndrew Jones #define ERRATA(erratum) _ERRATA(erratum) 17218bb0d4SAndrew Jones 18218bb0d4SAndrew Jones #define _ERRATA_RELAXED(erratum) errata_relaxed("ERRATA_" # erratum) 19218bb0d4SAndrew Jones #define ERRATA_RELAXED(erratum) _ERRATA_RELAXED(erratum) 20218bb0d4SAndrew Jones 21c346a8e0SAndrew Jones static inline bool errata_force(void) 22c346a8e0SAndrew Jones { 23*35145f14SAndrew Jones char *s; 24c346a8e0SAndrew Jones 25*35145f14SAndrew Jones if (CONFIG_ERRATA_FORCE == 1) 26*35145f14SAndrew Jones return true; 27*35145f14SAndrew Jones 28*35145f14SAndrew Jones s = getenv("ERRATA_FORCE"); 29c346a8e0SAndrew Jones return s && (*s == '1' || *s == 'y' || *s == 'Y'); 30c346a8e0SAndrew Jones } 31c346a8e0SAndrew Jones 32218bb0d4SAndrew Jones static inline bool errata(const char *erratum) 33218bb0d4SAndrew Jones { 34c346a8e0SAndrew Jones char *s; 35c346a8e0SAndrew Jones 36c346a8e0SAndrew Jones if (errata_force()) 37c346a8e0SAndrew Jones return true; 38c346a8e0SAndrew Jones 39c346a8e0SAndrew Jones s = getenv(erratum); 40218bb0d4SAndrew Jones 41218bb0d4SAndrew Jones return s && (*s == '1' || *s == 'y' || *s == 'Y'); 42218bb0d4SAndrew Jones } 43218bb0d4SAndrew Jones 44218bb0d4SAndrew Jones static inline bool errata_relaxed(const char *erratum) 45218bb0d4SAndrew Jones { 46c346a8e0SAndrew Jones char *s; 47c346a8e0SAndrew Jones 48c346a8e0SAndrew Jones if (errata_force()) 49c346a8e0SAndrew Jones return true; 50c346a8e0SAndrew Jones 51c346a8e0SAndrew Jones s = getenv(erratum); 52218bb0d4SAndrew Jones 53218bb0d4SAndrew Jones return !(s && (*s == '0' || *s == 'n' || *s == 'N')); 54218bb0d4SAndrew Jones } 55218bb0d4SAndrew Jones 56218bb0d4SAndrew Jones #endif 57