FreeBSD/armv6 for QEMU

Oleksandr Tymoshenko gonzo at bluezbox.com
Thu Dec 6 07:52:59 UTC 2012


Hello,

I've just finished first version of VersatilePB support for FreeBSD/armv6.
QEMU uses this machine as a base for armv6 emulation. 

Full patch: http://people.freebsd.org/~gonzo/arm/qemu/versatilepb.diff
Build/run info: http://kernelnomicon.org/?p=229

Kernel supports serial console, timers, primary and secondary interrupt
controllers, PCI, LCD controller, Keyboard/Mouse interface (partially,
no LEDs suport, no mouse)

Some patches are not versatile-pb specific so I'd like more people to look
at them:

- http://people.freebsd.org/~gonzo/patches/fdt-baseaddr.diff
Check for return code of fdt_get_range and if it fails assume base address 
is zero. Otherwise pbase was used uninitialized and causes exception

- http://people.freebsd.org/~gonzo/patches/smc-interrupts.diff
Disable if_smc's interrupt in filter. It is reenabled by taskqueue later

- http://people.freebsd.org/~gonzo/patches/sym-barrier.diff
Barrier function for ARM

There is one more PL011-specific change, but Im still not sure if it's correct

Some notes taken during development:

- FDT support for handling interrupt-source property is insufficient for cascading 
  interrupt controllers. I think concept of global IRQ space,  arm_get_next_irq 
  and related functions should be reconsidered at least for FDT-enabled kernels.

- Proper PS/2 keyboard support for arch other than sparc/x86 is inevitable
   code duplications. PS/2 protocol logic should be extracted from dev/atkbd
   and made arch-indepedent.

- Framebuffer/syscons driver is PITA. No news here


More information about the freebsd-arm mailing list