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