diff options
author | Ben Widawsky <ben@bwidawsk.net> | 2011-06-24 11:42:03 -0700 |
---|---|---|
committer | Ben Widawsky <ben@bwidawsk.net> | 2011-07-28 14:26:57 -0700 |
commit | 62873796c4a96554cc139e9aa49e25ce19cd65cd (patch) | |
tree | 94ec773aca3881e696bd6f1067ec16beb4056e9a /lib/debug.h | |
parent | e39b13d7e4174ec50fd41d74fe8d3375c8ef2850 (diff) |
intel-gpu-tools/debugging: shader debugger
high level summary of the files:
* debug_rdata - get current state from debug registers. Helpful
when developing the debugger, and could serve some purpose in the
future.
* eudb - the debugger itself
* eviction_macro - generate the proper macro to flush the EU render
cache until I get control flow working
* pre_cpp - an evaluating c preprocesser like thing, to be used before
cpp
* sr - the system routine, exception handler which runs on the EU
* test - a very basic test system routine
* debug.h
Diffstat (limited to 'lib/debug.h')
-rw-r--r-- | lib/debug.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/lib/debug.h b/lib/debug.h new file mode 100644 index 00000000..af9cf391 --- /dev/null +++ b/lib/debug.h @@ -0,0 +1,92 @@ +/* + * Copyright © 2011 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Ben Widawsky <ben@bwidawsk.net> + * + */ + +#ifndef _DEBUG_H_ +#define _DEBUG_H_ + +#define DEBUG_PROTOCOL_VERSION 1 +#define COMMUNICATION_OFFSET 0xc00 +#define COMMUNICATION_QWORD 0xc0 + +#define STATE_EU_MSG 0x47534d65 /* eMSG */ +#define STATE_CPU_ACK 0x4b434163 /* cACK */ +#define STATE_OFFSET 0xc20 +#define STATE_QWORD 0xc2 + +#define TX_OFFSET 0xc40 +#define TX_QWORD 0xc4 +#define RX_OFFSET 0xc60 +#define RX_QWORD 0xc6 + +#ifndef GEN_ASM +typedef uint32_t grf[8]; +typedef uint32_t mrf[8]; +typedef uint8_t cr[12]; +typedef uint32_t sr; + +#define DWORD8(x) {x, x, x, x, x, x, x, x} + +const static grf protocol_version = DWORD8(DEBUG_PROTOCOL_VERSION); +const static grf eu_msg = DWORD8(STATE_EU_MSG); +const static grf cpu_ack = DWORD8(STATE_CPU_ACK); + +struct eu_state { + mrf m_regs[15]; + grf g_regs[16]; + grf pad; + +/* 0x400 */ + cr cr0; + sr sr0; + uint32_t beef_pad[4]; + uint8_t pad2[992 + 1024]; + +/* 0xc00 COMMUNICATION_OFFSET */ + grf version; + grf state_magic; + grf eu_tx; + grf eu_rx; + + uint8_t pad3[896]; +} __attribute__((packed)); + +static inline void +print_reg(uint8_t reg[32]) { + uint32_t *dwords = (uint32_t *)reg; + printf("%08x %08x %08x %08x %08x %08x %08x %08x", + dwords[7], dwords[6], dwords[5], dwords[4], + dwords[3], dwords[2], dwords[1], dwords[0]); +} + +static inline void +print_creg(uint8_t reg[12]) { + uint32_t *dwords = (uint32_t *)reg; + printf("%08x %08x %08x", dwords[2], dwords[1], dwords[0]); +} +#endif + +#endif |