Fri, 04 Mar 2011 01:36:30 +0000
fix issue with WE+ bit becoming unset, fix pagefault:not-mapped-in logic
- The WE+ (page write enable) bit was becoming unset when the Page Status bits were being set.
A stupid mistake in an AND expression was unsetting the write-enable, thus making S4TEST 12,2 and 12,3 fail spectacularly.
- Pagefaults were not being generated correctly for pages which were not mapped in. Even Supervisor code accessing unmapped pages should get a PF.
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@71 | 8 | # define LOG(x, ...) do { fprintf(stderr, "%s:%d:%s(): " x "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__); } while (0) |
philpem@98 | 9 | # define LOGS(x) do { fprintf(stderr, "%s:%d:%s(): " x "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__); } while (0) |
philpem@71 | 10 | /// Log a message to stderr if 'cond' is true |
philpem@71 | 11 | # define LOG_IF(cond, x, ...) do { if (cond) fprintf(stderr, "%s:%d:%s(): " x "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__); } while (0) |
philpem@98 | 12 | # define LOG_IFS(cond, x) do { if (cond) fprintf(stderr, "%s:%d:%s(): " x "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__); } 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 |