diff options
| author | Tor Aamodt <[email protected]> | 2010-08-04 08:18:26 -0800 |
|---|---|---|
| committer | Tor Aamodt <[email protected]> | 2010-08-04 08:18:26 -0800 |
| commit | 0ef446ceb7b5045030724f6906fc011296623d2d (patch) | |
| tree | 834f97ece6c91e5fb11cfebb2bc44dc22c5eec38 /src/abstract_hardware_model.h | |
| parent | a5fb09084b9783b3fb86ca42bd6a12800361ff85 (diff) | |
intial support for integrated interactive debugger (for debugging PTX assembly)
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 7137]
Diffstat (limited to 'src/abstract_hardware_model.h')
| -rw-r--r-- | src/abstract_hardware_model.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/abstract_hardware_model.h b/src/abstract_hardware_model.h index 3b3d07e..98d934c 100644 --- a/src/abstract_hardware_model.h +++ b/src/abstract_hardware_model.h @@ -67,6 +67,62 @@ private: unsigned m_bank; // n in ".const[n]"; note .const == .const[0] (see PTX 2.1 manual, sec. 5.1.3) }; +#include <string> + +class brk_pt { +public: + brk_pt() { m_valid=false; } + brk_pt( const char *fileline, unsigned uid ) + { + m_valid = true; + m_watch = false; + m_fileline = std::string(fileline); + m_thread_uid=uid; + } + brk_pt( unsigned addr, unsigned value ) + { + m_valid = true; + m_watch = true; + m_addr = addr; + m_value = value; + } + + unsigned get_value() const { return m_value; } + addr_t get_addr() const { return m_addr; } + bool is_valid() const { return m_valid; } + bool is_watchpoint() const { return m_watch; } + bool is_equal( const std::string &fileline, unsigned uid ) const + { + if( m_watch ) + return false; + if( (m_thread_uid != (unsigned)-1) && (uid != m_thread_uid) ) + return false; + return m_fileline == fileline; + } + std::string location() const + { + char buffer[1024]; + sprintf(buffer,"%s thread uid = %u", m_fileline.c_str(), m_thread_uid); + return buffer; + } + + unsigned set_value( unsigned val ) { return m_value=val; } +private: + bool m_valid; + bool m_watch; + + // break point + std::string m_fileline; + unsigned m_thread_uid; + + // watch point + unsigned m_addr; + unsigned m_value; +}; + +bool thread_at_brkpt( void *ptx_thd_info, const struct brk_pt &b ); +unsigned read_location( addr_t addr ); + #endif #endif |
