libsel4vm: Updated README

Updated README with further information regarding current features
and potential future features.
diff --git a/libsel4vm/README.md b/libsel4vm/README.md
index a49379b..7de18d7 100644
--- a/libsel4vm/README.md
+++ b/libsel4vm/README.md
@@ -12,10 +12,44 @@
 
 # libsel4vm
 
-A guest hardware virtualisation library for X86 (32-bit) and ARM (aarch32 & aarch64). This is
-a consolidated library composed of libraries previously known as (but now deprecated) 'libsel4vmm' (x86)
-and 'libsel4arm-vmm' (arm).
-
+A guest hardware virtualisation library for X86 (32-bit) and ARM (aarch32 & aarch64) for use on seL4-based systems.
 Reference implementations using this library are:
 * CAmkES VM (x86) - https://github.com/seL4/camkes-vm
 * CAmkES ARM VM (arm) - https://github.com/SEL4PROJ/camkes-arm-vm
+
+For documentation on the libsel4vm interface see [here](docs/)
+
+### Features
+* Hardware virtualisation support for the following architectures:
+    * ARM
+        * ARMv7 (+ Virtualisation Extensions)
+        * ARMv8
+    * X86
+        * ia32 (Intel VTX)
+* IRQ Controller emulation
+    * GICv2 (aarch32, aarch64)
+    * PIC & LAPIC (ia32)
+* Guest VM Memory and RAM Management
+* Guest VCPU Fault and Context Management
+* VM Runtime Management
+
+#### Architecture Specific Features
+
+#####  ARM
+* SMP support for GICv2 (ARM) platforms
+##### X86
+* IOPort fault registration handler
+* VMCall handler registration interface
+
+### Potential future features (yet to be implemented)
+
+#### Architecture Specific Features
+##### ARM
+* Virtual GICv3 support (aarch32 & aarch64)
+    * + SMP support for GICv3 platforms
+##### X86
+* x86-64 support (Intel VTX)
+* SMP support on x86 platforms (ia32 & x86\_64)
+
+*Note: This is a consolidated library composed of libraries previously known as (but now deprecated) 'libsel4vmm' (x86)
+and 'libsel4arm-vmm' (arm).*
diff --git a/libsel4vm/docs/README.md b/libsel4vm/docs/README.md
new file mode 100644
index 0000000..4e1ab37
--- /dev/null
+++ b/libsel4vm/docs/README.md
@@ -0,0 +1,37 @@
+<!--
+     Copyright 2020, Data61
+     Commonwealth Scientific and Industrial Research Organisation (CSIRO)
+     ABN 41 687 119 230.
+
+     This software may be distributed and modified according to the terms of
+     the BSD 2-Clause license. Note that NO WARRANTY is provided.
+     See "LICENSE_BSD2.txt" for details.
+
+     @TAG(DATA61_BSD)
+-->
+
+# libsel4vm docs
+
+See below for usage documentation on various libsel4vm interfaces:
+
+### Common Interfaces
+* [sel4vm/boot.h](libsel4vm_boot.md): An interface for creating, initialising and configuring VM instances
+* [sel4vm/guest_irq_controller.h](libsel4vm_guest_irq_controller.md): Abstractions around initialising a guest VM IRQ controller
+* [sel4vm/guest_memory_helpers.h](libsel4vm_guest_memory_helpers.md): Helpers for using the guest memory interface
+* [sel4vm/guest_vcpu_fault.h](libsel4vm_guest_vcpu_fault.md): Useful methods to query and configure vcpu objects that have faulted during execution
+* [sel4vm/guest_vm.h](libsel4vm_guest_vm.md): Provides base definitions of the guest vm datastructure and primitives to run the VM instance
+* [sel4vm/guest_iospace.h](libsel4vm_guest_iospace.md):  Enables the registration and management of a guest VM's IO Space
+* [sel4vm/guest_memory.h](libsel4vm_guest_memory.md): Useful abstractions to manage your guest VM's physical address space
+* [sel4vm/guest_ram.h](libsel4vm_guest_ram.md): A set of methods to manage, register, allocate and copy to/from a guest VM's RAM
+* [sel4vm/guest_vm_util.h](libsel4vm_guest_vm_util.md): A set of utilties to query a guest vm instance
+
+### Architecture Specific Interfaces
+
+#### ARM
+* [sel4vm/arch/guest_arm_context.h](libsel4vm_guest_arm_context.md): Provides a set of useful getters and setters on ARM vcpu thread contexts
+* [sel4vm/arch/guest_vm_arch.h](libsel4vm_arm_guest_vm.md): Provide definitions of the arm guest vm datastructures and primitives to configure the VM instance
+#### X86
+* [sel4vm/arch/guest_x86_context.h](libsel4vm_guest_x86_context.md): Provides a set of useful getters and setters on x86 vcpu thread contexts
+* [sel4vm/arch/guest_vm_arch.h](libsel4vm_x86_guest_vm.md): Provide definitions of the x86 guest vm datastructures and primitives to configure the VM instance
+* [sel4vm/arch/vmcall.h](libsel4vm_x86_vmcall.md): Methods for registering and managing vmcall instruction handlers
+* [sel4vm/arch/ioports.h](libsel4vm_x86_ioports.md): Abstractions for initialising, registering and handling ioport events