^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) * gdb helper commands and functions for Linux kernel debugging
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Kernel constants derived from include files.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Copyright (c) 2016 Linaro Ltd
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * Authors:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) * Kieran Bingham <kieran.bingham@linaro.org>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) * This work is licensed under the terms of the GNU GPL version 2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #include <linux/clk-provider.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #include <linux/fs.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #include <linux/hrtimer.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #include <linux/mount.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #include <linux/of_fdt.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #include <linux/threads.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) /* We need to stringify expanded macros so that they can be parsed */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define STRING(x) #x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #define XSTRING(x) STRING(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define LX_VALUE(x) LX_##x = x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define LX_GDBPARSED(x) LX_##x = gdb.parse_and_eval(XSTRING(x))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) * IS_ENABLED generates (a || b) which is not compatible with python
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) * We can only switch on configuration items we know are available
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) * Therefore - IS_BUILTIN() is more appropriate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #define LX_CONFIG(x) LX_##x = IS_BUILTIN(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) /* The build system will take care of deleting everything above this marker */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) <!-- end-c-headers -->
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) import gdb
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) /* linux/clk-provider.h */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) if IS_BUILTIN(CONFIG_COMMON_CLK):
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) LX_GDBPARSED(CLK_GET_RATE_NOCACHE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) /* linux/fs.h */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) LX_VALUE(SB_RDONLY)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) LX_VALUE(SB_SYNCHRONOUS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) LX_VALUE(SB_MANDLOCK)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) LX_VALUE(SB_DIRSYNC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) LX_VALUE(SB_NOATIME)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) LX_VALUE(SB_NODIRATIME)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) /* linux/htimer.h */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) LX_GDBPARSED(hrtimer_resolution)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) /* linux/mount.h */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) LX_VALUE(MNT_NOSUID)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) LX_VALUE(MNT_NODEV)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) LX_VALUE(MNT_NOEXEC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) LX_VALUE(MNT_NOATIME)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) LX_VALUE(MNT_NODIRATIME)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) LX_VALUE(MNT_RELATIME)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) /* linux/threads.h */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) LX_VALUE(NR_CPUS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) /* linux/of_fdt.h> */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) LX_VALUE(OF_DT_HEADER)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) /* Kernel Configs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) LX_CONFIG(CONFIG_GENERIC_CLOCKEVENTS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) LX_CONFIG(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) LX_CONFIG(CONFIG_HIGH_RES_TIMERS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) LX_CONFIG(CONFIG_NR_CPUS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) LX_CONFIG(CONFIG_OF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) LX_CONFIG(CONFIG_TICK_ONESHOT)