diff options
Diffstat (limited to 'include/asm-x86/paravirt.h')
-rw-r--r-- | include/asm-x86/paravirt.h | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/include/asm-x86/paravirt.h b/include/asm-x86/paravirt.h index ef5e8ec6a6ab..eef8095a09dc 100644 --- a/include/asm-x86/paravirt.h +++ b/include/asm-x86/paravirt.h | |||
@@ -1396,8 +1396,8 @@ extern struct paravirt_patch_site __parainstructions[], | |||
1396 | * caller saved registers but the argument parameter */ | 1396 | * caller saved registers but the argument parameter */ |
1397 | #define PV_SAVE_REGS "pushq %%rdi;" | 1397 | #define PV_SAVE_REGS "pushq %%rdi;" |
1398 | #define PV_RESTORE_REGS "popq %%rdi;" | 1398 | #define PV_RESTORE_REGS "popq %%rdi;" |
1399 | #define PV_EXTRA_CLOBBERS EXTRA_CLOBBERS, "rcx" , "rdx" | 1399 | #define PV_EXTRA_CLOBBERS EXTRA_CLOBBERS, "rcx" , "rdx", "rsi" |
1400 | #define PV_VEXTRA_CLOBBERS EXTRA_CLOBBERS, "rdi", "rcx" , "rdx" | 1400 | #define PV_VEXTRA_CLOBBERS EXTRA_CLOBBERS, "rdi", "rcx" , "rdx", "rsi" |
1401 | #define PV_FLAGS_ARG "D" | 1401 | #define PV_FLAGS_ARG "D" |
1402 | #endif | 1402 | #endif |
1403 | 1403 | ||
@@ -1489,8 +1489,26 @@ static inline unsigned long __raw_local_irq_save(void) | |||
1489 | 1489 | ||
1490 | 1490 | ||
1491 | #ifdef CONFIG_X86_64 | 1491 | #ifdef CONFIG_X86_64 |
1492 | #define PV_SAVE_REGS pushq %rax; pushq %rdi; pushq %rcx; pushq %rdx | 1492 | #define PV_SAVE_REGS \ |
1493 | #define PV_RESTORE_REGS popq %rdx; popq %rcx; popq %rdi; popq %rax | 1493 | push %rax; \ |
1494 | push %rcx; \ | ||
1495 | push %rdx; \ | ||
1496 | push %rsi; \ | ||
1497 | push %rdi; \ | ||
1498 | push %r8; \ | ||
1499 | push %r9; \ | ||
1500 | push %r10; \ | ||
1501 | push %r11 | ||
1502 | #define PV_RESTORE_REGS \ | ||
1503 | pop %r11; \ | ||
1504 | pop %r10; \ | ||
1505 | pop %r9; \ | ||
1506 | pop %r8; \ | ||
1507 | pop %rdi; \ | ||
1508 | pop %rsi; \ | ||
1509 | pop %rdx; \ | ||
1510 | pop %rcx; \ | ||
1511 | pop %rax | ||
1494 | #define PARA_PATCH(struct, off) ((PARAVIRT_PATCH_##struct + (off)) / 8) | 1512 | #define PARA_PATCH(struct, off) ((PARAVIRT_PATCH_##struct + (off)) / 8) |
1495 | #define PARA_SITE(ptype, clobbers, ops) _PVSITE(ptype, clobbers, ops, .quad, 8) | 1513 | #define PARA_SITE(ptype, clobbers, ops) _PVSITE(ptype, clobbers, ops, .quad, 8) |
1496 | #define PARA_INDIRECT(addr) *addr(%rip) | 1514 | #define PARA_INDIRECT(addr) *addr(%rip) |