blob: 0ed99cf4c14a62cab225e05d30863af761080ef5 [file] [log] [blame]
edgar_iglef967792009-01-07 14:19:38 +00001#include <stdio.h>
2#include <stdlib.h>
3#include <errno.h>
4#include <unistd.h>
5
6#include <sys/syscall.h>
7
8#ifndef SYS_set_thread_area
9#define SYS_set_thread_area 243
10#endif
11
12int main (void)
13{
14 unsigned long tp;
15 int ret;
16
17 ret = syscall (SYS_set_thread_area, 0xf0);
18 if (ret != -1 || errno != EINVAL) {
19 perror ("Invalid thread area accepted:");
20 abort();
21 }
22
23 ret = syscall (SYS_set_thread_area, 0xeddeed00);
24 if (ret != 0) {
25 perror ("Valid thread area not accepted: ");
26 abort ();
27 }
28
29 asm ("move $pid,%0" : "=r" (tp));
30 tp &= ~0xff;
31
32 if (tp != 0xeddeed00) {
33 perror ("tls2");
34 abort ();
35 }
36
37 printf ("pass\n");
38 return EXIT_SUCCESS;
39}