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*6afb9481SAlexandru Elisei #include <libcflat.h> 10*6afb9481SAlexandru Elisei 1135145f14SAndrew Jones #include "config.h" 1235145f14SAndrew Jones 1335145f14SAndrew Jones #ifndef CONFIG_ERRATA_FORCE 1435145f14SAndrew Jones #define CONFIG_ERRATA_FORCE 0 1535145f14SAndrew Jones #endif 16218bb0d4SAndrew Jones 17218bb0d4SAndrew Jones #define _ERRATA(erratum) errata("ERRATA_" # erratum) 18218bb0d4SAndrew Jones #define ERRATA(erratum) _ERRATA(erratum) 19218bb0d4SAndrew Jones 20218bb0d4SAndrew Jones #define _ERRATA_RELAXED(erratum) errata_relaxed("ERRATA_" # erratum) 21218bb0d4SAndrew Jones #define ERRATA_RELAXED(erratum) _ERRATA_RELAXED(erratum) 22218bb0d4SAndrew Jones errata_force(void)23c346a8e0SAndrew Jonesstatic inline bool errata_force(void) 24c346a8e0SAndrew Jones { 2535145f14SAndrew Jones char *s; 26c346a8e0SAndrew Jones 2735145f14SAndrew Jones if (CONFIG_ERRATA_FORCE == 1) 2835145f14SAndrew Jones return true; 2935145f14SAndrew Jones 3035145f14SAndrew Jones s = getenv("ERRATA_FORCE"); 31c346a8e0SAndrew Jones return s && (*s == '1' || *s == 'y' || *s == 'Y'); 32c346a8e0SAndrew Jones } 33c346a8e0SAndrew Jones errata(const char * erratum)34218bb0d4SAndrew Jonesstatic inline bool errata(const char *erratum) 35218bb0d4SAndrew Jones { 36c346a8e0SAndrew Jones char *s; 37c346a8e0SAndrew Jones 38c346a8e0SAndrew Jones if (errata_force()) 39c346a8e0SAndrew Jones return true; 40c346a8e0SAndrew Jones 41c346a8e0SAndrew Jones s = getenv(erratum); 42218bb0d4SAndrew Jones 43218bb0d4SAndrew Jones return s && (*s == '1' || *s == 'y' || *s == 'Y'); 44218bb0d4SAndrew Jones } 45218bb0d4SAndrew Jones errata_relaxed(const char * erratum)46218bb0d4SAndrew Jonesstatic inline bool errata_relaxed(const char *erratum) 47218bb0d4SAndrew Jones { 48c346a8e0SAndrew Jones char *s; 49c346a8e0SAndrew Jones 50c346a8e0SAndrew Jones if (errata_force()) 51c346a8e0SAndrew Jones return true; 52c346a8e0SAndrew Jones 53c346a8e0SAndrew Jones s = getenv(erratum); 54218bb0d4SAndrew Jones 55218bb0d4SAndrew Jones return !(s && (*s == '0' || *s == 'n' || *s == 'N')); 56218bb0d4SAndrew Jones } 57218bb0d4SAndrew Jones 58218bb0d4SAndrew Jones #endif 59