123456789101112131415161718192021222324252627282930313233343536373839404142 |
- do{
- unsigned long __d0, __d1; \
- __asm__ __volatile__ ( "movw %%dx, %%ax \n\t" \
- "andq $0x7, %%rcx \n\t" \
- "addq %4, %%rcx \n\t" \
- "shlq $32, %%rcx \n\t" \
- "addq %%rcx, %%rax \n\t" \
- "xorq %%rcx, %%rcx \n\t" \
- "movl %%edx, %%ecx \n\t" \
- "shrq $16, %%ecx \n\t" \
- "shlq $48, %%rcx \n\t" \
- "addq %%rcx, %%rax \n\t" \
- "movq %%rax, %0 \n\t" \
- "shrq $32, %%rdx \n\t" \
- "movq %%rdx, %1 \n\t" \
- :"=m"(*((unsigned long *)(gate_selector_addr))) , \
- "=m"(*(1 + (unsigned long *)(gate_selector_addr))),"=&a"(__d0),"=&d"(__d1) \
- :"i"(attr << 8), \
- "3"((unsigned long *)(code_addr)),"2"(0x8 << 16),"c"(ist) \
- :"memory" \
- )
- }while(0)
|