diff options
Diffstat (limited to 'src/nv_local.h')
-rw-r--r-- | src/nv_local.h | 27 |
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 */ |