This prototypes https://github.com/ARM-software/abi-aa/issues/158
This currently doesn't support a large number of arguments, where padding still needs to be added.
Some notable changes:
- The va_list is made read-only in the callee to enable writes to the memory pointed by C9.
- C9 is set to NULL in the caller if the callee is variadic and we don't have any arguments passed through memory.
This behavior can be enabled in clang by passing -Xclang -morello-bounded-memargs.