1 #include <features.h> 2 #include <fpu_control.h> 3 #include <signal.h> 4 #include <sys/types.h> 5 #include <signal.h> 6 #include <stdio.h> 7 #include <stdlib.h> 8 #include <ucontext.h> 9 #include <unistd.h> 10 11 char source[40] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\0"; 12 char target[40] = " \0"; 13 14 void handle_SIG(int sig) 15 { 16 static int counter; 17 char buf2[40]; 18 19 counter++; 20 asm volatile( "larl 1,1f\n" 21 "ex 0,0(1)\n" 22 "j 2f\n" 23 "1: mvc 0(30,%0),0(%1)\n" 24 "2:\n" 25 ::"a" (buf2), "a" (source) 26 : "1"); 27 if (counter == 2) { 28 printf("%s\n", target); 29 exit(1); 30 } else 31 alarm(1); 32 } 33 34 int main() 35 { 36 signal(SIGALRM, handle_SIG); 37 alarm(1); 38 39 asm volatile( "larl 1,1f\n" 40 "0: ex 0,0(1)\n" 41 "j 0b\n" 42 "1: mvc 0(20,%0),0(%1)\n" 43 ::"a" (target), "a" (source) 44 : "1"); 45 exit(0); 46 } 47