Fri, 12 Apr 2013 16:26:25 +0100
Don't set PS1 if there is a level-7 interrupt or bus error
PS1 should only be set if the page was originally present (PS1 or PS0 set). If
PS0 and PS1 are clear (page not present) then do NOT set PS1.
Once again the TRM is blatantly and spectacularly wrong...
philpem@88 | 1 | #ifndef _UTILS_H |
philpem@88 | 2 | #define _UTILS_H |
philpem@71 | 3 | |
philpem@89 | 4 | #include <stdio.h> |
philpem@89 | 5 | |
philpem@71 | 6 | #ifndef NDEBUG |
philpem@71 | 7 | /// Log a message to stderr |
philpem@143 | 8 | # define LOG(x, ...) do { fprintf(stderr, "%s:%d:%s(): " x "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__); fflush(stderr); } while (0) |
philpem@143 | 9 | # define LOGS(x) do { fprintf(stderr, "%s:%d:%s(): " x "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__); fflush(stderr); } while (0) |
philpem@71 | 10 | /// Log a message to stderr if 'cond' is true |
philpem@143 | 11 | # define LOG_IF(cond, x, ...) do { if (cond) fprintf(stderr, "%s:%d:%s(): " x "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__); fflush(stderr); } while (0) |
philpem@143 | 12 | # define LOG_IFS(cond, x) do { if (cond) fprintf(stderr, "%s:%d:%s(): " x "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__); fflush(stderr); } while (0) |
philpem@71 | 13 | #else |
philpem@71 | 14 | #define LOG(x, ...) |
philpem@98 | 15 | #define LOGS(x) |
philpem@71 | 16 | #define LOG_IF(cond, x, ...) |
philpem@98 | 17 | #define LOG_IFS(cond, x) |
philpem@71 | 18 | #endif |
philpem@71 | 19 | |
philpem@88 | 20 | /// Get the number of elements in an array |
philpem@88 | 21 | #define NELEMS(x) (sizeof(x)/sizeof(x[0])) |
philpem@88 | 22 | |
philpem@71 | 23 | #endif // _H_UTILS |