ARM support

Add ARM support to LibVMI. This PR has been tested on Arndale with Xen 4.4:

root@linaro-nano:~/libvmi# cat /proc/cpuinfo 
processor    : 0
model name    : ARMv7 Processor rev 4 (v7l)
Features    : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm 
CPU implementer    : 0x41
CPU architecture: 7
CPU variant    : 0x0
CPU part    : 0xc0f
CPU revision    : 4

Hardware    : SAMSUNG EXYNOS5 (Flattened Device Tree)
Revision    : 0000
Serial        : 0000000000000000
root@linaro-nano:~/libvmi# ./examples/process-list domu
Process listing for VM domu (id=6)
Next list entry is at: c78399c0
[    0] swapper/0 (struct addr:c06748e8)
[    1] bash (struct addr:c7839740)
[    2] kthreadd (struct addr:c7839180)
[    3] ksoftirqd/0 (struct addr:c7838bc0)
[    4] kworker/0:0 (struct addr:c7838600)
[    5] kworker/0:0H (struct addr:c7838040)
[    6] kworker/u2:0 (struct addr:c7873780)
[    7] rcu_sched (struct addr:c78731c0)
[    8] rcu_bh (struct addr:c7872c00)
[    9] migration/0 (struct addr:c7872640)
[   10] khelper (struct addr:c7872080)
[   11] kdevtmpfs (struct addr:c78877c0)
[   12] kworker/u2:1 (struct addr:c7887200)
[   23] xenwatch (struct addr:c7900cc0)
[   24] xenbus (struct addr:c7900700)
[  178] writeback (struct addr:c7ac2e80)
[  180] bioset (struct addr:c7ac2300)
[  182] kblockd (struct addr:c7ad1180)
[  192] kworker/0:1 (struct addr:c79ad840)
[  203] khubd (struct addr:c7932200)
[  300] rpciod (struct addr:c7a22240)
[  313] kswapd0 (struct addr:c7b1ce80)
[  314] fsnotify_mark (struct addr:c7b1c8c0)
[  315] ecryptfs-kthrea (struct addr:c7b1c300)
[  316] nfsiod (struct addr:c7b3f740)
[  318] crypto (struct addr:c7b3ebc0)
[  847] khvcd (struct addr:c7ad1740)
[  909] kpsmoused (struct addr:c79ac700)
[  937] bioset (struct addr:c79accc0)
[  939] deferwq (struct addr:c7901840)
[  940] kworker/0:1H (struct addr:c79ad280)
[  941] jbd2/xvda-8 (struct addr:c7a23940)
[  942] ext4-rsv-conver (struct addr:c7a23380)
[  970] udevd (struct addr:c7306200)
[ 1066] sshd (struct addr:c7307340)
[ 1085] sshd (struct addr:c7900140)
[ 1087] kauditd (struct addr:c7ad0040)
Looks like physoffset was malloc-ed as a uint64 in grammar.y

On Thu, Nov 13, 2014 at 6:49 PM, Antony Saba <notifications@github.com>
wrote:

> In libvmi/arch/arm_aarch32.c:
>
> > +    return NULL;
> > +}
> > +
> > +status_t aarch32_init(vmi_instance_t vmi) {
> > +
> > +    if(!vmi->arch_interface) {
> > +        vmi->arch_interface = safe_malloc(sizeof(struct arch_interface));
> > +        bzero(vmi->arch_interface, sizeof(struct arch_interface));
> > +    }
> > +
> > +    vmi->arch_interface->v2p = v2p_aarch32;
> > +    vmi->arch_interface->get_va_pages = get_va_pages_aarch32;
> > +
> > +    if(vmi->mode == VMI_FILE)
> > +    {
> > +        addr_t *phys_offset = g_hash_table_lookup(vmi->config, "physoffset");
>
> It seems odd to dereference a value from the config, is this intended?
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/libvmi/libvmi/pull/149/files#r20333155>.
>