src/utils.h

Fri, 12 Apr 2013 16:26:25 +0100

author
Philip Pemberton <philpem@philpem.me.uk>
date
Fri, 12 Apr 2013 16:26:25 +0100
branch
experimental_memory_mapper_v2
changeset 144
609707511166
parent 143
0fa6f5a480a6
permissions
-rw-r--r--

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