File: getseg.c

package info (click to toggle)
valgrind 1%3A3.12.0~svn20160714-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 120,428 kB
  • ctags: 70,855
  • sloc: ansic: 674,645; exp: 26,134; xml: 21,574; asm: 7,570; cpp: 7,567; makefile: 7,380; sh: 6,188; perl: 5,855; haskell: 195
file content (25 lines) | stat: -rw-r--r-- 613 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/* Test segment register getting. */

#include <stdio.h>

int main(void)
{
   unsigned short csw = -1;
   unsigned int csl = -1;
   unsigned long csq = -1;
   unsigned short csw_mem = -1;

   __asm__ __volatile__ (
       "movw %%cs, %0\n" /* mov segReg, r16 */
       "movl %%cs, %1\n" /* mov segReg, r32 */
       "movq %%cs, %2\n" /* mov segReg, r64 */
       "movw %%cs, %3\n" /* mov segReg, mem16 */
       : "=r" (csw), "=r" (csl), "=r" (csq), "=m" (csw_mem));

   printf("cs(w)=%u\n", csw);
   printf("cs(l)=%u\n", csl);
   printf("cs(q)=%lu\n", csq);
   printf("cs(w_mem)=%u\n", csw_mem);

   return 0;
}