On Sat, Jun 06, 2015 at 05:21:40PM -0500, Edwin Amsler wrote:
> Nice! Any quick tutorials and patches for us to start playing with this
> ourselves?
Something along the lines of:
cd /sys/arch/armv7/conf/
config GENERIC
cd ../compile/GENERIC
make bsd.VEXPRESSA15.umg
$ sudo ifconfig tun0 link0
$ sudo ifconfig bridge0 add tun0 add em0 up
sudo sh -c "qemu-system-arm -runas $USER \
-M vexpress-a15 -nographic \
-netdev tap,id=net0 \
-kernel bsd.VEXPRESSA15.umg -append "sd0a" \
-drive file=test.img,if=none,id=drive0,format=raw \
-device virtio-scsi-device,id=scsi \
-device scsi-hd,drive=drive0 \
-device virtio-net-device,netdev=net0 \
-device virtio-balloon-device \
-device virtio-rng-device"
Index: arm/include/atomic.h
===================================================================
RCS file: /cvs/src/sys/arch/arm/include/atomic.h,v
retrieving revision 1.10
diff -u -p -r1.10 atomic.h
--- arm/include/atomic.h 14 Nov 2014 09:56:06 -0000 1.10
+++ arm/include/atomic.h 8 Jun 2015 12:37:49 -0000
@@ -193,5 +193,19 @@ atomic_clearbits_int(volatile unsigned i
restore_interrupts(cpsr);
}
+#if defined(CPU_ARMv7)
+#define __membar(_f) do { __asm __volatile(_f ::: "memory"); } while (0)
+
+#define membar_enter() __membar("dmb")
+#define membar_exit() __membar("dmb")
+#define membar_producer() __membar("dmb")
+#define membar_consumer() __membar("dmb")
+#define membar_sync() __membar("dmb")
+
+#define virtio_membar_producer() __membar("dmb")
+#define virtio_membar_consumer() __membar("dmb")
+#define virtio_membar_sync() __membar("dmb")
+#endif /* CPU_ARMv7 */
+
#endif /* defined(_KERNEL) */
#endif /* _ARM_ATOMIC_H_ */
Index: armv7/conf/GENERIC
===================================================================
RCS file: /cvs/src/sys/arch/armv7/conf/GENERIC,v
retrieving revision 1.4
diff -u -p -r1.4 GENERIC
--- armv7/conf/GENERIC 29 May 2015 02:44:14 -0000 1.4
+++ armv7/conf/GENERIC 8 Jun 2015 12:37:49 -0000
@@ -99,6 +99,19 @@ usb* at ehci? #flags 0x1
#ohci* at sunxi?
#usb* at ohci?
+# ARM Versatile Express
+vexpress0 at mainbus?
+sysreg* at vexpress?
+pluart* at vexpress?
+virtio* at vexpress?
+
+# virtio devices
+vioblk* at virtio?
+vio* at virtio?
+viomb* at virtio?
+viornd* at virtio?
+vioscsi* at virtio?
+
# USB bus support
usb* at ehci? flags 0x1