* [palmer:intc 8/18] arch/riscv/kernel/kgdb.c:47:5: warning: no previous prototype for 'decode_register_index'
@ 2020-05-29 15:22 kbuild test robot
0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2020-05-29 15:22 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 6383 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/palmer/linux.git intc
head: 2bd957e2b0b66894613a189939378cd1c000188d
commit: edde5584c7ab5d18b87f092fe6fe8a72590e7100 [8/18] riscv: Add SW single-step support for KDB
config: riscv-allyesconfig (attached as .config)
compiler: riscv64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout edde5584c7ab5d18b87f092fe6fe8a72590e7100
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=riscv
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
<< from arch/riscv/kernel/kgdb.c:9:
>> arch/riscv/kernel/kgdb.c:47:5: warning: no previous prototype for 'decode_register_index' [-Wmissing-prototypes]
47 | int decode_register_index(unsigned long opcode, int offset)
| ^~~~~~~~~~~~~~~~~~~~~
<< from arch/riscv/kernel/kgdb.c:9:
>> arch/riscv/kernel/kgdb.c:52:5: warning: no previous prototype for 'decode_register_index_short' [-Wmissing-prototypes]
52 | int decode_register_index_short(unsigned long opcode, int offset)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
<< from arch/riscv/kernel/kgdb.c:9:
>> arch/riscv/kernel/kgdb.c:58:5: warning: no previous prototype for 'get_step_address' [-Wmissing-prototypes]
58 | int get_step_address(struct pt_regs *regs, unsigned long *next_addr)
| ^~~~~~~~~~~~~~~~
arch/riscv/kernel/kgdb.c:139:5: warning: no previous prototype for 'do_single_step' [-Wmissing-prototypes]
139 | int do_single_step(struct pt_regs *regs)
| ^~~~~~~~~~~~~~
arch/riscv/kernel/kgdb.c:276:6: warning: no previous prototype for 'kgdb_arch_handle_qxfer_pkt' [-Wmissing-prototypes]
276 | void kgdb_arch_handle_qxfer_pkt(char *remcom_in_buffer,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
arch/riscv/kernel/kgdb.c:323:5: warning: no previous prototype for 'kgdb_riscv_kgdbbreak' [-Wmissing-prototypes]
323 | int kgdb_riscv_kgdbbreak(unsigned long addr)
| ^~~~~~~~~~~~~~~~~~~~
In file included from arch/riscv/include/asm/kgdb.h:109,
from include/linux/kgdb.h:20,
from arch/riscv/kernel/kgdb.c:9:
arch/riscv/include/asm/gdb_xml.h:7:19: warning: 'riscv_gdb_stub_feature' defined but not used [-Wunused-const-variable=]
7 | static const char riscv_gdb_stub_feature[64] =
| ^~~~~~~~~~~~~~~~~~~~~~
vim +/decode_register_index +47 arch/riscv/kernel/kgdb.c
46
> 47 int decode_register_index(unsigned long opcode, int offset)
48 {
49 return (opcode >> offset) & 0x1F;
50 }
51
> 52 int decode_register_index_short(unsigned long opcode, int offset)
53 {
54 return ((opcode >> offset) & 0x7) + 8;
55 }
56
57 /* Calculate the new address for after a step */
> 58 int get_step_address(struct pt_regs *regs, unsigned long *next_addr)
59 {
60 unsigned long pc = regs->epc;
61 unsigned long *regs_ptr = (unsigned long *)regs;
62 unsigned int rs1_num, rs2_num;
63 int op_code;
64
65 if (probe_kernel_address((void *)pc, op_code))
66 return -EINVAL;
67 if ((op_code & __INSN_LENGTH_MASK) != __INSN_LENGTH_GE_32) {
68 if (is_c_jalr_insn(op_code) || is_c_jr_insn(op_code)) {
69 rs1_num = decode_register_index(op_code, RVC_C2_RS1_OPOFF);
70 *next_addr = regs_ptr[rs1_num];
71 } else if (is_c_j_insn(op_code) || is_c_jal_insn(op_code)) {
72 *next_addr = EXTRACT_RVC_J_IMM(op_code) + pc;
73 } else if (is_c_beqz_insn(op_code)) {
74 rs1_num = decode_register_index_short(op_code,
75 RVC_C1_RS1_OPOFF);
76 if (!rs1_num || regs_ptr[rs1_num] == 0)
77 *next_addr = EXTRACT_RVC_B_IMM(op_code) + pc;
78 else
79 *next_addr = pc + 2;
80 } else if (is_c_bnez_insn(op_code)) {
81 rs1_num =
82 decode_register_index_short(op_code, RVC_C1_RS1_OPOFF);
83 if (rs1_num && regs_ptr[rs1_num] != 0)
84 *next_addr = EXTRACT_RVC_B_IMM(op_code) + pc;
85 else
86 *next_addr = pc + 2;
87 } else {
88 *next_addr = pc + 2;
89 }
90 } else {
91 if ((op_code & __INSN_OPCODE_MASK) == __INSN_BRANCH_OPCODE) {
92 bool result = false;
93 long imm = EXTRACT_BTYPE_IMM(op_code);
94 unsigned long rs1_val = 0, rs2_val = 0;
95
96 rs1_num = decode_register_index(op_code, RVG_RS1_OPOFF);
97 rs2_num = decode_register_index(op_code, RVG_RS2_OPOFF);
98 if (rs1_num)
99 rs1_val = regs_ptr[rs1_num];
100 if (rs2_num)
101 rs2_val = regs_ptr[rs2_num];
102
103 if (is_beq_insn(op_code))
104 result = (rs1_val == rs2_val) ? true : false;
105 else if (is_bne_insn(op_code))
106 result = (rs1_val != rs2_val) ? true : false;
107 else if (is_blt_insn(op_code))
108 result =
109 ((long)rs1_val <
110 (long)rs2_val) ? true : false;
111 else if (is_bge_insn(op_code))
112 result =
113 ((long)rs1_val >=
114 (long)rs2_val) ? true : false;
115 else if (is_bltu_insn(op_code))
116 result = (rs1_val < rs2_val) ? true : false;
117 else if (is_bgeu_insn(op_code))
118 result = (rs1_val >= rs2_val) ? true : false;
119 if (result)
120 *next_addr = imm + pc;
121 else
122 *next_addr = pc + 4;
123 } else if (is_jal_insn(op_code)) {
124 *next_addr = EXTRACT_JTYPE_IMM(op_code) + pc;
125 } else if (is_jalr_insn(op_code)) {
126 rs1_num = decode_register_index(op_code, RVG_RS1_OPOFF);
127 if (rs1_num)
128 *next_addr = ((unsigned long *)regs)[rs1_num];
129 *next_addr += EXTRACT_ITYPE_IMM(op_code);
130 } else if (is_sret_insn(op_code)) {
131 *next_addr = pc;
132 } else {
133 *next_addr = pc + 4;
134 }
135 }
136 return 0;
137 }
138
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 63463 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-05-29 15:22 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-05-29 15:22 [palmer:intc 8/18] arch/riscv/kernel/kgdb.c:47:5: warning: no previous prototype for 'decode_register_index' kbuild test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.