summaryrefslogtreecommitdiff
path: root/src/nv_local.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/nv_local.h')
-rw-r--r--src/nv_local.h27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/nv_local.h b/src/nv_local.h
index 5a74ee2..f539a2c 100644
--- a/src/nv_local.h
+++ b/src/nv_local.h
@@ -49,14 +49,37 @@
#include "compiler.h"
#include "xf86_OSproc.h"
+//#define DAVE_DEBUG
+#ifdef DAVE_DEBUG
+
+extern CARD32 debug_offset;
+static inline void nv_wr08(void *p, int i, CARD8 d, char *fname)
+{
+ static int last_vga = 0;
+
+ if (i == 0x3d4)
+ last_vga = d;
+
+ if (strcmp(fname, "nvReadVGA") && last_vga != 0x3f && last_vga != 0x37)
+ ErrorF("wr08: %08X %08X, %02X\t%s\n", p-debug_offset, i, d, fname);
+ MMIO_OUT8((pointer)(p), (i), (d));
+}
+
+
+#define NV_WR08(p,i,d) nv_wr08(p, i, d, __FUNCTION__)
+#define NV_WR32(p,i,d) do { ErrorF("wr32: %08X, %08X\t%s\n", p -debug_offset + i, d, __FUNCTION__); MMIO_OUT32((pointer)(p), (i), (d)); } while(0)
+#else
+#define NV_WR08(p,i,d) MMIO_OUT8((pointer)(p), (i), (d))
+#define NV_WR32(p,i,d) MMIO_OUT32((pointer)(p), (i), (d))
+#endif
+
+
/*
* HW access macros. These assume memory-mapped I/O, and not normal I/O space.
*/
-#define NV_WR08(p,i,d) MMIO_OUT8((pointer)(p), (i), (d))
#define NV_RD08(p,i) MMIO_IN8((pointer)(p), (i))
#define NV_WR16(p,i,d) MMIO_OUT16((pointer)(p), (i), (d))
#define NV_RD16(p,i) MMIO_IN16((pointer)(p), (i))
-#define NV_WR32(p,i,d) MMIO_OUT32((pointer)(p), (i), (d))
#define NV_RD32(p,i) MMIO_IN32((pointer)(p), (i))
/* VGA I/O is now always done through MMIO */