Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. static inline unsigned long get_current(void)
  2. {
  3. unsigned long current;
  4.  
  5. asm volatile (
  6. " movl %%esp, %%eax;"
  7. " andl %1, %%eax;"
  8. " movl (%%eax), %0;"
  9. : "=r" (current)
  10. : "i" (0xfffff000)
  11. );
  12. return current;
  13. }
  14.  
  15. program.c: Assembler messages: program.c:455: Error: incorrect
  16. register `%rbx' used with `l' suffix
  17.  
  18. asm volatile (
  19. " movq %1, %%rax
  20. " andq %%rsp, %%rax;" // We only care about lower bits.
  21. " movq (%%rax), %0;"
  22. : "=r" (current)
  23. : "i" (0xfffffffffffff000)
  24. : "rax" // Remember to mark any temporary registers modified in "clobber"
  25. );
  26.  
  27. static inline unsigned long get_current(void)
  28. {
  29. unsigned register long current asm("sp");
  30.  
  31. asm volatile ("" : "=r"(current));
  32.  
  33. return (current & ~ (unsigned long)0xfff);
  34. }
  35.  
  36. sp
  37.  
  38. sp
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement