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...

     1 #ifndef _UTILS_H
     2 #define _UTILS_H
     4 #include <stdio.h>
     6 #ifndef NDEBUG
     7 /// Log a message to stderr
     8 #  define LOG(x, ...) do { fprintf(stderr, "%s:%d:%s(): " x "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__); fflush(stderr); } while (0)
     9 #  define LOGS(x) do { fprintf(stderr, "%s:%d:%s(): " x "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__); fflush(stderr); } while (0)
    10 /// Log a message to stderr if 'cond' is true
    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)
    12 #  define LOG_IFS(cond, x) do { if (cond) fprintf(stderr, "%s:%d:%s(): " x "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__); fflush(stderr); } while (0)
    13 #else
    14 #define LOG(x, ...)
    15 #define LOGS(x)
    16 #define LOG_IF(cond, x, ...)
    17 #define LOG_IFS(cond, x)
    18 #endif
    20 /// Get the number of elements in an array
    21 #define NELEMS(x) (sizeof(x)/sizeof(x[0]))
    23 #endif // _H_UTILS