162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#ifndef _ASM_X86_PM_TRACE_H 362306a36Sopenharmony_ci#define _ASM_X86_PM_TRACE_H 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <asm/asm.h> 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#define TRACE_RESUME(user) \ 862306a36Sopenharmony_cido { \ 962306a36Sopenharmony_ci if (pm_trace_enabled) { \ 1062306a36Sopenharmony_ci const void *tracedata; \ 1162306a36Sopenharmony_ci asm volatile(_ASM_MOV " $1f,%0\n" \ 1262306a36Sopenharmony_ci ".section .tracedata,\"a\"\n" \ 1362306a36Sopenharmony_ci "1:\t.word %c1\n\t" \ 1462306a36Sopenharmony_ci _ASM_PTR " %c2\n" \ 1562306a36Sopenharmony_ci ".previous" \ 1662306a36Sopenharmony_ci :"=r" (tracedata) \ 1762306a36Sopenharmony_ci : "i" (__LINE__), "i" (__FILE__)); \ 1862306a36Sopenharmony_ci generate_pm_trace(tracedata, user); \ 1962306a36Sopenharmony_ci } \ 2062306a36Sopenharmony_ci} while (0) 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci#define TRACE_SUSPEND(user) TRACE_RESUME(user) 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci#endif /* _ASM_X86_PM_TRACE_H */ 25