Hack to get the correct value for the interrupt from the vendor supplied
device tree. The GIC used the format <type irq flags> where the type is
0 for Shared Peripheral Interrupts (SPI), and 1 for Private Peripheral
Interrupts. The SPIs start at 32 in the GIc so we need to adjust their
values to match this.
Get interrupts working through the GICv2 driver.
Fix EFI build breakage: interact() was missing a parameter.

Submitted by: Robin Randhawa <robin.randhawa AT arm.com>
Fix EFI build breakage: efi_register_handles was missing a parameter.

Submitted by: Robin Randhawa <robin.randhawa AT arm.com>
Remove the hack to map interrupts from simplebus to nexus so it can be
used with ofwbus.
Get the generic timer working on ARMv8. More work is needed to allow
the driver to be used on both 32 and 64 bit platforms.
Implement cpu_idle correctly
Enable random, sleeping now works
Add two missing headers needed by userland.
Add minimal csu support. Some bits are broken as they are just loops, but
we are not in userland yet so wait until then to fix them.
Fix the PRI*64 and SCN*64 macros. We use long long for 64-bit typedefs.
Allow us to build code that includes fenv.h
Add WEAK_REFERENCE to create a weak reference to a symbol in asm
Port the GNU parts of CSU and libgcc_s to arm64. Unfortunately
execute_cfa_program causes the following with clang. As the backend
has changed significantly in 3.5 no effort to diagnose or fix the
problem will take place.

Assertion failed: (Scavenged[SI].FrameIndex >= 0 &&
 "Cannot scavenge register without an emergency spill slot!"),
 function scavengeRegister, file
 <llvm location>/lib/CodeGen/RegisterScavenging.cpp, line 415.
Stack dump:
0.	Program arguments: <compiler command>
1.	<eof> parser at end of file
2.	Code generation
3.	Running pass 'Function Pass Manager' on module <file location>
4.	Running pass 'Prologue/Epilogue Insertion & Frame Finalization'
 on function '@execute_cfa_program'
There is no tls support on arm64 yet.
Add the needed MCOUNT macros
Add support for arm64 to jemalloc
Initial port of libc to arm64, just enough to get init compiling.

As only static libraries are supported the arm64/Symbol.map file has
not been created.

System calls are not implemented as the kernel is missing the code to
handle them.
Don't attempt to compile files in compiler-rt that crash llvm.

These cause an error like the following (long lines wrapped).

fatal error: error in backend: Cannot select: 0x802a5db10: \
   i64,i64 = srl_parts 0x802a5e710, 0x802a5ee10, 0x802a5e310 [ORD=19] [ID=13]
 0x802a5e710: i64,ch = CopyFromReg 0x8029f1fb8, 0x802a5e210 [ORD=19] [ID=9]
  0x802a5e210: i64 = Register %vreg5 [ID=4]
 0x802a5ee10: i64 = Constant<0> [ID=5]
 0x802a5e310: i64 = zero_extend 0x802a5d210 [ORD=19] [ID=12]
  0x802a5d210: i32 = sub 0x802a5c010, 0x802a5d710 [ORD=17] [ID=11]
   0x802a5c010: i32 = Constant<1075> [ID=1]
   0x802a5d710: i32 = AssertSext 0x802a5c910, 0x802a5c310 [ORD=17] [ID=10]
    0x802a5c910: i32,ch = CopyFromReg 0x8029f1fb8, 0x802a5e610 [ORD=17] [ID=8]
     0x802a5e610: i32 = Register %vreg1 [ID=2]
In function: __fixdfti
Add the config for libelf to be used on arm64.