summaryrefslogtreecommitdiff
path: root/src/abstract_hardware_model.h
diff options
context:
space:
mode:
authorTor Aamodt <[email protected]>2010-08-04 08:18:26 -0800
committerTor Aamodt <[email protected]>2010-08-04 08:18:26 -0800
commit0ef446ceb7b5045030724f6906fc011296623d2d (patch)
tree834f97ece6c91e5fb11cfebb2bc44dc22c5eec38 /src/abstract_hardware_model.h
parenta5fb09084b9783b3fb86ca42bd6a12800361ff85 (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.h56
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