sewardj | 8eb8bab | 2015-07-21 14:44:28 +0000 | [diff] [blame] | 1 | /* Test segment register getting. */ |
| 2 | |
| 3 | #include <stdio.h> |
| 4 | |
| 5 | int main(void) |
| 6 | { |
| 7 | unsigned short csw = -1; |
| 8 | unsigned int csl = -1; |
| 9 | unsigned long csq = -1; |
| 10 | unsigned short csw_mem = -1; |
| 11 | |
| 12 | __asm__ __volatile__ ( |
| 13 | "movw %%cs, %0\n" /* mov segReg, r16 */ |
| 14 | "movl %%cs, %1\n" /* mov segReg, r32 */ |
| 15 | "movq %%cs, %2\n" /* mov segReg, r64 */ |
| 16 | "movw %%cs, %3\n" /* mov segReg, mem16 */ |
| 17 | : "=r" (csw), "=r" (csl), "=r" (csq), "=m" (csw_mem)); |
| 18 | |
| 19 | printf("cs(w)=%u\n", csw); |
| 20 | printf("cs(l)=%u\n", csl); |
| 21 | printf("cs(q)=%lu\n", csq); |
| 22 | printf("cs(w_mem)=%u\n", csw_mem); |
| 23 | |
| 24 | return 0; |
| 25 | } |