1*5c06c1dfSSamson Tam /* SPDX-License-Identifier: MIT */ 2*5c06c1dfSSamson Tam 3*5c06c1dfSSamson Tam /* Copyright 2024 Advanced Micro Devices, Inc. */ 4*5c06c1dfSSamson Tam 5*5c06c1dfSSamson Tam #ifndef SPL_DEBUG_H 6*5c06c1dfSSamson Tam #define SPL_DEBUG_H 7*5c06c1dfSSamson Tam 8*5c06c1dfSSamson Tam #if defined(CONFIG_HAVE_KGDB) || defined(CONFIG_KGDB) 9*5c06c1dfSSamson Tam #define SPL_ASSERT_CRITICAL(expr) do { \ 10*5c06c1dfSSamson Tam if (WARN_ON(!(expr))) { \ 11*5c06c1dfSSamson Tam kgdb_breakpoint(); \ 12*5c06c1dfSSamson Tam } \ 13*5c06c1dfSSamson Tam } while (0) 14*5c06c1dfSSamson Tam #else 15*5c06c1dfSSamson Tam #define SPL_ASSERT_CRITICAL(expr) do { \ 16*5c06c1dfSSamson Tam if (WARN_ON(!(expr))) { \ 17*5c06c1dfSSamson Tam ; \ 18*5c06c1dfSSamson Tam } \ 19*5c06c1dfSSamson Tam } while (0) 20*5c06c1dfSSamson Tam #endif /* CONFIG_HAVE_KGDB || CONFIG_KGDB */ 21*5c06c1dfSSamson Tam 22*5c06c1dfSSamson Tam #if defined(CONFIG_DEBUG_KERNEL_DC) 23*5c06c1dfSSamson Tam #define SPL_ASSERT(expr) SPL_ASSERT_CRITICAL(expr) 24*5c06c1dfSSamson Tam #else 25*5c06c1dfSSamson Tam #define SPL_ASSERT(expr) WARN_ON(!(expr)) 26*5c06c1dfSSamson Tam #endif /* CONFIG_DEBUG_KERNEL_DC */ 27*5c06c1dfSSamson Tam 28*5c06c1dfSSamson Tam #define SPL_BREAK_TO_DEBUGGER() SPL_ASSERT(0) 29*5c06c1dfSSamson Tam 30*5c06c1dfSSamson Tam #endif // SPL_DEBUG_H 31