aboutsummaryrefslogtreecommitdiff
path: root/riscv/htif.h
diff options
context:
space:
mode:
Diffstat (limited to 'riscv/htif.h')
-rw-r--r--riscv/htif.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/riscv/htif.h b/riscv/htif.h
new file mode 100644
index 0000000..0106695
--- /dev/null
+++ b/riscv/htif.h
@@ -0,0 +1,35 @@
+#ifndef _HTIF_H
+#define _HTIF_H
+
+#include <stdint.h>
+
+class sim_t;
+struct packet;
+
+// this class implements the host-target interface for program loading, etc.
+class htif_t
+{
+public:
+ htif_t(int _tohost_fd, int _fromhost_fd);
+ ~htif_t();
+ void init(sim_t* _sim);
+
+ // wait for host to send start command
+ void wait_for_start();
+
+ // we block on the host if the target machine reads the fromhost register,
+ // which provides determinism in tohost/fromhost communication.
+ void wait_for_fromhost_write();
+
+private:
+ sim_t* sim;
+ int tohost_fd;
+ int fromhost_fd;
+ uint16_t seqno;
+
+ void nack(uint16_t seqno);
+ void send_packet(packet* p);
+ int wait_for_packet();
+};
+
+#endif