david%UPenn-DSL%upenn.CSNET@CSNET-RELAY.ARPA (03/18/86)
The problem at hand deals with ULTRIX 1.1 on a VAX 750. I am doing some stuff with signals and I have gotten bogged down in the implementation details in the kernel. I am trying to write some code that does a non-standard exit from an interrupt routine, which means that I have to deal with the signal call frame linkages by hand. It seems that the kernel, upon delivering the first signal, creates a section of code above the stack. This section of code then calls the interrupt routine that was specified by the "signal()" call. ADB names this section of code "sigtramp". When the interrupt routine returns to "sigtramp", the assembly instructions that are executed in "sigtramp" are: ret /* Return from sigtramp to code that is also above stack */ chmk $8b rei Now this code works fine, and execution returns to the point of interruption in the routine interrupted by the signal. BUT, there is no such system call as 8b! The entry in the system entry table for 8b is "nosys()". "nosys" should terminate a process with signal number 12, which is "illegal system call". Can anyone tell me what this "chmk $8b" is really doing? It is not killing my process. I also cannot get a "sigstack()" call to work. The call exits normally, but the process does not execute on the specified interrupt stack when a signal is delivered. T'anx ver' much - in advance DAVE. F. PS> Please reply to david%UPenn-DSL@UPENN