H. Peter Anvin | 1965aae | 2008-10-22 22:26:29 -0700 | [diff] [blame] | 1 | #ifndef _ASM_X86_RESUME_TRACE_H |
| 2 | #define _ASM_X86_RESUME_TRACE_H |
Thomas Gleixner | 3578fac | 2008-01-30 13:30:38 +0100 | [diff] [blame] | 3 | |
| 4 | #include <asm/asm.h> |
| 5 | |
Joe Perches | c6fd5d4 | 2008-03-23 01:03:19 -0700 | [diff] [blame] | 6 | #define TRACE_RESUME(user) \ |
| 7 | do { \ |
Thomas Gleixner | 3578fac | 2008-01-30 13:30:38 +0100 | [diff] [blame] | 8 | if (pm_trace_enabled) { \ |
Jan Beulich | 63687a5 | 2008-05-12 15:44:41 +0200 | [diff] [blame] | 9 | const void *tracedata; \ |
H. Peter Anvin | 8df9676 | 2008-08-18 18:13:33 -0700 | [diff] [blame] | 10 | asm volatile(_ASM_MOV " $1f,%0\n" \ |
Joe Perches | c6fd5d4 | 2008-03-23 01:03:19 -0700 | [diff] [blame] | 11 | ".section .tracedata,\"a\"\n" \ |
| 12 | "1:\t.word %c1\n\t" \ |
| 13 | _ASM_PTR " %c2\n" \ |
| 14 | ".previous" \ |
| 15 | :"=r" (tracedata) \ |
| 16 | : "i" (__LINE__), "i" (__FILE__)); \ |
Thomas Gleixner | 3578fac | 2008-01-30 13:30:38 +0100 | [diff] [blame] | 17 | generate_resume_trace(tracedata, user); \ |
| 18 | } \ |
| 19 | } while (0) |
| 20 | |
H. Peter Anvin | 1965aae | 2008-10-22 22:26:29 -0700 | [diff] [blame] | 21 | #endif /* _ASM_X86_RESUME_TRACE_H */ |