syscalls: a more efficient way to do syscalls on a cpu-specific basis
For now implemented only for ARM
The idea is that for 0-4 params, we can shove them into r1-r3,r12
and let the handle rpick them up this only works because va_list in arm
is defines as a uintptr_t pointing to the args (this is not a guarantee
in other archs). We use this to our advantage here to produce much neater
and smaller and faster app code. We use "SWI 1" to indicate fast call and
"SWI 0" for old slow calls. Slow calls can pass any number of params,
while new fast calls have 0-4 params. Also since va_list on some
arches is an array and taking an address of an array using unary "&" in
C is a mess with no certain results, we fix that too
Change-Id: Id846e93707e58398810426fd23b61a0efc0b37f7
8 files changed