bus: implement message_read_ap() non-recursively
As it turns out if you pass a va_list to a function its state becomes undefined after that function returns, and this actually does break on x86-32. Hence, let's reimplement message_read_ap() without the use of recursion. Instead we now build our own stack of types in an array so that we can decode the entire parameter list in a single stackframe.
Showing with 111 additions and 31 deletions