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 11char source[40] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\0"; 12char target[40] = " \0"; 13 14void 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 34int 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