Helge, On December 15th, 2009 an additional *context test was added to glibc, see stdlib/tst-makecontext3.c. This test fails on hppa with: ~~~ makecontext: does not know how to handle more than 8 arguments ~~~ I have a couple of questions and comments about hppa's *context implementation: 1. Why limit the number of input arguments to 8? The ABI should allow an unlimited number of arguments to be placed on the stack. It is up to the caller to make sure that ucp->uc_stack.ss_sp points to enough space to hold all of the additional arguments. 2. It doesn't appear that the current implementation transfers ucp->uc_stack.ss_sp to the stack pointer when makecontext() is called. Take a look at: http://www.opengroup.org/onlinepubs/009695399/functions/makecontext.html The caller can set an alternate stack by setting ucp->uc_stack.ss_sp, and makecontext should likely do: ucp->uc_mcontext.sc_gr[30] = ucp->uc_stack.ss_sp + <space required by args>; 3. POSIX says that all the arguments must be of type int, but in a comment you write "XXX: This implementation only handles integer arguments." Is there any reason this comment should stay there? To give you an example, I'm attaching a modified makecontext.diff for you to comment on. Cheers, Carlos.
Attachment:
makecontext.diff
Description: Binary data