^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef _ASM_X86_PM_TRACE_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define _ASM_X86_PM_TRACE_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #include <asm/asm.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #define TRACE_RESUME(user) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) do { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) if (pm_trace_enabled) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) const void *tracedata; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) asm volatile(_ASM_MOV " $1f,%0\n" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) ".section .tracedata,\"a\"\n" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) "1:\t.word %c1\n\t" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) _ASM_PTR " %c2\n" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) ".previous" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) :"=r" (tracedata) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) : "i" (__LINE__), "i" (__FILE__)); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) generate_pm_trace(tracedata, user); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) } \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) } while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define TRACE_SUSPEND(user) TRACE_RESUME(user)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #endif /* _ASM_X86_PM_TRACE_H */