src/utils.h

Tue, 15 Jan 2013 17:02:56 +0000

author
Philip Pemberton <philpem@philpem.me.uk>
date
Tue, 15 Jan 2013 17:02:56 +0000
changeset 121
15ae2788e848
parent 98
d1af20db5f02
child 143
0fa6f5a480a6
permissions
-rw-r--r--

Implement m68k_read_disassembler_* properly

The previous implementations of m68k_read_disassembler are unsuitable due to
interactions with the memory mapper. A read from memory by the DASM should not
mutate system state.

So we modify the m68k_read_disassembler_{8,16,32} functions to do the memory
mapping themselves without causing page faults (bus error exception) or
updating the page flag bits (which could really upset the kernel).

Now all we need is a debugger/disassembler...

     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__); } while (0)
     9 #  define LOGS(x) do { fprintf(stderr, "%s:%d:%s(): " x "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__); } 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__); } while (0)
    12 #  define LOG_IFS(cond, x) do { if (cond) fprintf(stderr, "%s:%d:%s(): " x "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__); } 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