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 
handle_SIG(int sig)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 
main()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