diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8fd2089
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,7 @@
+*.ko
+*.mod.c
+*.o
+.*o.cmd
+.tmp_versions/
+Module.symvers
+modules.order
diff --git a/Makefile b/Makefile
index 5318d5b..8b10ec1 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,15 @@
-KERNEL_PATH ?= ../linux
+# By default, assume this was checked out as a submodule of the Hafnium repo
+# and that Linux was checked out along side that checkout. These paths can be
+# overridden if that assumption is incorrect.
+HAFNIUM_PATH ?= $(PWD)/../..
+KERNEL_PATH ?= $(HAFNIUM_PATH)/../linux
 
 obj-m += hafnium.o
 
 hafnium-y += main.o
-hafnium-y += hvc.o
+hafnium-y += hf_call.o
+
+ccflags-y = -I$(HAFNIUM_PATH)/inc/vmapi
 
 all:
 	make -C $(KERNEL_PATH) M=$(PWD) modules
diff --git a/hf_call.S b/hf_call.S
new file mode 100644
index 0000000..07743ca
--- /dev/null
+++ b/hf_call.S
@@ -0,0 +1,6 @@
+.text
+
+.global hf_call
+hf_call:
+	hvc #0
+	ret
diff --git a/hvc.S b/hvc.S
deleted file mode 100644
index bec077b..0000000
--- a/hvc.S
+++ /dev/null
@@ -1,6 +0,0 @@
-.text
-
-.global hf_hvc
-hf_hvc:
-	hvc #0
-	ret
diff --git a/main.c b/main.c
index a0c8641..a985fb7 100644
--- a/main.c
+++ b/main.c
@@ -7,10 +7,12 @@
 #include <linux/sched/task.h>
 #include <linux/slab.h>
 
+#include <hf/call.h>
+
 struct hf_vcpu {
 	spinlock_t lock;
-	long vm_index;
-	long vcpu_index;
+	uint32_t vm_index;
+	uint32_t vcpu_index;
 	struct task_struct *task;
 	struct hrtimer timer;
 	bool pending_irq;
@@ -21,23 +23,11 @@
 	struct hf_vcpu *vcpu;
 };
 
-long hf_hvc(size_t arg0, size_t arg1, size_t arg2, size_t arg3);
-
 static struct hf_vm *hf_vms;
 static long hf_vm_count;
 static struct page *hf_send_page = NULL;
 static struct page *hf_recv_page = NULL;
 
-/* TODO: Define constants below according to spec. Include shared header. */
-#define HF_VCPU_RUN         0xff00
-#define HF_VM_GET_COUNT     0xff01
-#define HF_VCPU_GET_COUNT   0xff02
-#define HF_VM_CONFIGURE     0xff03
-#define HF_RPC_REQUEST      0xff04
-#define HF_RPC_READ_REQUEST 0xff05
-#define HF_RPC_ACK          0xff06
-#define HF_RPC_REPLY        0xff07
-
 /**
  * Wakes up the thread associated with the vcpu that owns the given timer. This
  * is called when the timer the thread is waiting on expires.
@@ -73,8 +63,7 @@
 		spin_unlock_irqrestore(&vcpu->lock, flags);
 
 		/* Call into hafnium to run vcpu. */
-		ret = hf_hvc(HF_VCPU_RUN, vcpu->vm_index, vcpu->vcpu_index,
-			     irqs);
+		ret = hf_vcpu_run(vcpu->vm_index, vcpu->vcpu_index);
 
 		/* A negative return value indicates that this vcpu needs to
 		 * sleep for the given number of nanoseconds.
@@ -119,7 +108,7 @@
 				for (i = 0; i < count; i++)
 					printk(KERN_CONT "%c", buf[i]);
 				printk(KERN_CONT "\n");
-				hf_hvc(HF_RPC_ACK, 0, 0, 0);
+				hf_rpc_ack();
 			}
 			break;
 		}
@@ -199,7 +188,7 @@
 
 	/* Copy data to send buffer. */
 	memcpy(page_address(hf_send_page), buf, count);
-	ret = hf_hvc(HF_RPC_REQUEST, 0, count, 0);
+	ret = hf_rpc_request(0, count);
 	if (ret < 0)
 		return -EAGAIN;
 
@@ -256,8 +245,8 @@
 	 * because the hypervisor will use them, even if the module is
 	 * unloaded.
 	 */
-	ret = hf_hvc(HF_VM_CONFIGURE, (size_t)page_to_phys(hf_send_page),
-		     (size_t)page_to_phys(hf_recv_page), 0);
+	ret = hf_vm_configure(page_to_phys(hf_send_page),
+			      page_to_phys(hf_recv_page));
 	if (ret) {
 		__free_page(hf_send_page);
 		__free_page(hf_recv_page);
@@ -268,7 +257,7 @@
 	}
 
 	/* Get the number of VMs and allocate storage for them. */
-	ret = hf_hvc(HF_VM_GET_COUNT, 0, 0, 0);
+	ret = hf_vm_get_count();
 	if (ret < 0) {
 		pr_err("Unable to retrieve number of VMs: %ld\n", ret);
 		return ret;
@@ -283,7 +272,7 @@
 	for (i = 0; i < hf_vm_count; i++) {
 		struct hf_vm *vm = hf_vms + i;
 
-		ret = hf_hvc(HF_VCPU_GET_COUNT, i, 0, 0);
+		ret = hf_vcpu_get_count(i);
 		if (ret < 0) {
 			pr_err("HF_VCPU_GET_COUNT failed for vm=%ld: %ld", i,
 			       ret);
