int v3_hvm_ros_user_init();
int v3_hvm_ros_user_deinit();
+// Establish function to be invoked by the VMM
+// to signal activity (basically an interrupt handler)
+// The handler can use the GPRs, but must save/restore
+// any other registers it needs itself. If it goes
+// out of its stack, it's out of luck
+int v3_hvm_ros_register_signal(void (*handler)(uint64_t), void *stack, uint64_t stack_size);
+int v3_hvm_ros_unregister_signal();
+
+// Replace the existing HRT with a new one
+// - this does not boot the new HRT
+// - the intial image is the one given in the .pal config
+int v3_hvm_ros_install_hrt_image(void *image, uint64_t size);
+
+typedef enum {RESET_HRT, RESET_ROS, RESET_BOTH} reset_type;
+
+int v3_hvm_ros_reset(reset_type what);
int v3_hvm_ros_merge_address_spaces();
int v3_hvm_ros_unmerge_address_spaces();
int v3_hvm_ros_invoke_hrt_sync(void *p, int handle_ros_events);
int v3_hvm_ros_desynchronize();
+// Signal the HRT from the ROS
+// The ROS can call this too, but it shouldn't be necesary
+int v3_hvm_hrt_signal_ros(uint64_t code);
#endif