diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-06-25 00:19:14 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-08 07:11:03 -0400 |
commit | 97349135fea7f0ba8464534433df3bfd1dc0e9a6 (patch) | |
tree | 7eb615f8c4b83a8327da92b96d95a44f8f54f101 /include/asm-x86/paravirt.h | |
parent | d8d5900ef8afc562088f8470feeaf17c4747790f (diff) |
x86/paravirt: add debugging for missing operations
Rather than just jumping to 0 when there's a missing operation, raise a BUG.
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: xen-devel <xen-devel@lists.xensource.com>
Cc: Stephen Tweedie <sct@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/asm-x86/paravirt.h')
-rw-r--r-- | include/asm-x86/paravirt.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/include/asm-x86/paravirt.h b/include/asm-x86/paravirt.h index 5467e2cff4bc..198293bed46f 100644 --- a/include/asm-x86/paravirt.h +++ b/include/asm-x86/paravirt.h | |||
@@ -459,10 +459,17 @@ int paravirt_disable_iospace(void); | |||
459 | #define VEXTRA_CLOBBERS , "rax", "r8", "r9", "r10", "r11" | 459 | #define VEXTRA_CLOBBERS , "rax", "r8", "r9", "r10", "r11" |
460 | #endif | 460 | #endif |
461 | 461 | ||
462 | #ifdef CONFIG_PARAVIRT_DEBUG | ||
463 | #define PVOP_TEST_NULL(op) BUG_ON(op == NULL) | ||
464 | #else | ||
465 | #define PVOP_TEST_NULL(op) ((void)op) | ||
466 | #endif | ||
467 | |||
462 | #define __PVOP_CALL(rettype, op, pre, post, ...) \ | 468 | #define __PVOP_CALL(rettype, op, pre, post, ...) \ |
463 | ({ \ | 469 | ({ \ |
464 | rettype __ret; \ | 470 | rettype __ret; \ |
465 | PVOP_CALL_ARGS; \ | 471 | PVOP_CALL_ARGS; \ |
472 | PVOP_TEST_NULL(op); \ | ||
466 | /* This is 32-bit specific, but is okay in 64-bit */ \ | 473 | /* This is 32-bit specific, but is okay in 64-bit */ \ |
467 | /* since this condition will never hold */ \ | 474 | /* since this condition will never hold */ \ |
468 | if (sizeof(rettype) > sizeof(unsigned long)) { \ | 475 | if (sizeof(rettype) > sizeof(unsigned long)) { \ |
@@ -491,6 +498,7 @@ int paravirt_disable_iospace(void); | |||
491 | #define __PVOP_VCALL(op, pre, post, ...) \ | 498 | #define __PVOP_VCALL(op, pre, post, ...) \ |
492 | ({ \ | 499 | ({ \ |
493 | PVOP_VCALL_ARGS; \ | 500 | PVOP_VCALL_ARGS; \ |
501 | PVOP_TEST_NULL(op); \ | ||
494 | asm volatile(pre \ | 502 | asm volatile(pre \ |
495 | paravirt_alt(PARAVIRT_CALL) \ | 503 | paravirt_alt(PARAVIRT_CALL) \ |
496 | post \ | 504 | post \ |