* arch/powerpc/lib/sstep.c:1172:38: warning: variable 'rc' set but not used
@ 2025-01-03 22:11 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-01-03 22:11 UTC (permalink / raw)
To: Sandipan Das; +Cc: oe-kbuild-all, linux-kernel, Michael Ellerman
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 0bc21e701a6ffacfdde7f04f87d664d82e8a13bf
commit: 930d6288a26787d2e7f633705434171a506db9c5 powerpc: sstep: Add support for maddhd, maddhdu, maddld instructions
date: 6 years ago
config: powerpc-randconfig-r011-20220404 (https://download.01.org/0day-ci/archive/20250104/202501040544.4HAEUplS-lkp@intel.com/config)
compiler: powerpc-linux-gcc (GCC) 12.4.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250104/202501040544.4HAEUplS-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202501040544.4HAEUplS-lkp@intel.com/
All warnings (new ones prefixed by >>):
include/linux/compiler.h:25:39: warning: ignoring attribute 'section ("\"_ftrace_annotated_branch\"")' because it conflicts with previous 'section ("\"_ftrace_branch\"")' [-Wattributes]
25 | static struct ftrace_likely_data \
| ^~~~~~~~~~~~~~~~~~
include/linux/compiler.h:69:30: note: in definition of macro '__trace_if'
69 | ______r = !!(cond); \
| ^~~~
arch/powerpc/lib/sstep.c:482:9: note: in expansion of macro 'if'
482 | if (unlikely(cross_endian)) {
| ^~
include/linux/compiler.h:48:26: note: in expansion of macro '__branch_check__'
48 | # define unlikely(x) (__branch_check__(x, 0, __builtin_constant_p(x)))
| ^~~~~~~~~~~~~~~~
arch/powerpc/lib/sstep.c:482:13: note: in expansion of macro 'unlikely'
482 | if (unlikely(cross_endian)) {
| ^~~~~~~~
include/linux/compiler.h:64:25: note: previous declaration here
64 | ______f = { \
| ^~~~~~~
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
56 | #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
| ^~~~~~~~~~
arch/powerpc/lib/sstep.c:482:9: note: in expansion of macro 'if'
482 | if (unlikely(cross_endian)) {
| ^~
arch/powerpc/lib/sstep.c: In function 'do_fp_store':
include/linux/compiler.h:25:39: warning: ignoring attribute 'section ("\"_ftrace_annotated_branch\"")' because it conflicts with previous 'section ("\"_ftrace_branch\"")' [-Wattributes]
25 | static struct ftrace_likely_data \
| ^~~~~~~~~~~~~~~~~~
include/linux/compiler.h:69:30: note: in definition of macro '__trace_if'
69 | ______r = !!(cond); \
| ^~~~
arch/powerpc/lib/sstep.c:548:9: note: in expansion of macro 'if'
548 | if (unlikely(cross_endian)) {
| ^~
include/linux/compiler.h:48:26: note: in expansion of macro '__branch_check__'
48 | # define unlikely(x) (__branch_check__(x, 0, __builtin_constant_p(x)))
| ^~~~~~~~~~~~~~~~
arch/powerpc/lib/sstep.c:548:13: note: in expansion of macro 'unlikely'
548 | if (unlikely(cross_endian)) {
| ^~~~~~~~
include/linux/compiler.h:64:25: note: previous declaration here
64 | ______f = { \
| ^~~~~~~
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
56 | #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
| ^~~~~~~~~~
arch/powerpc/lib/sstep.c:548:9: note: in expansion of macro 'if'
548 | if (unlikely(cross_endian)) {
| ^~
arch/powerpc/lib/sstep.c: In function 'do_vec_load':
include/linux/compiler.h:25:39: warning: ignoring attribute 'section ("\"_ftrace_annotated_branch\"")' because it conflicts with previous 'section ("\"_ftrace_branch\"")' [-Wattributes]
25 | static struct ftrace_likely_data \
| ^~~~~~~~~~~~~~~~~~
include/linux/compiler.h:69:30: note: in definition of macro '__trace_if'
69 | ______r = !!(cond); \
| ^~~~
arch/powerpc/lib/sstep.c:577:9: note: in expansion of macro 'if'
577 | if (unlikely(cross_endian))
| ^~
include/linux/compiler.h:48:26: note: in expansion of macro '__branch_check__'
48 | # define unlikely(x) (__branch_check__(x, 0, __builtin_constant_p(x)))
| ^~~~~~~~~~~~~~~~
arch/powerpc/lib/sstep.c:577:13: note: in expansion of macro 'unlikely'
577 | if (unlikely(cross_endian))
| ^~~~~~~~
include/linux/compiler.h:64:25: note: previous declaration here
64 | ______f = { \
| ^~~~~~~
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
56 | #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
| ^~~~~~~~~~
arch/powerpc/lib/sstep.c:577:9: note: in expansion of macro 'if'
577 | if (unlikely(cross_endian))
| ^~
arch/powerpc/lib/sstep.c: In function 'do_vec_store':
include/linux/compiler.h:25:39: warning: ignoring attribute 'section ("\"_ftrace_annotated_branch\"")' because it conflicts with previous 'section ("\"_ftrace_branch\"")' [-Wattributes]
25 | static struct ftrace_likely_data \
| ^~~~~~~~~~~~~~~~~~
include/linux/compiler.h:69:30: note: in definition of macro '__trace_if'
69 | ______r = !!(cond); \
| ^~~~
arch/powerpc/lib/sstep.c:608:9: note: in expansion of macro 'if'
608 | if (unlikely(cross_endian))
| ^~
include/linux/compiler.h:48:26: note: in expansion of macro '__branch_check__'
48 | # define unlikely(x) (__branch_check__(x, 0, __builtin_constant_p(x)))
| ^~~~~~~~~~~~~~~~
arch/powerpc/lib/sstep.c:608:13: note: in expansion of macro 'unlikely'
608 | if (unlikely(cross_endian))
| ^~~~~~~~
include/linux/compiler.h:64:25: note: previous declaration here
64 | ______f = { \
| ^~~~~~~
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
56 | #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
| ^~~~~~~~~~
arch/powerpc/lib/sstep.c:608:9: note: in expansion of macro 'if'
608 | if (unlikely(cross_endian))
| ^~
arch/powerpc/lib/sstep.c: In function 'analyse_instr':
>> arch/powerpc/lib/sstep.c:1172:38: warning: variable 'rc' set but not used [-Wunused-but-set-variable]
1172 | unsigned int opcode, ra, rb, rc, rd, spr, u;
| ^~
arch/powerpc/lib/sstep.c: In function 'emulate_update_regs':
include/linux/compiler.h:25:39: warning: ignoring attribute 'section ("\"_ftrace_annotated_branch\"")' because it conflicts with previous 'section ("\"_ftrace_branch\"")' [-Wattributes]
25 | static struct ftrace_likely_data \
| ^~~~~~~~~~~~~~~~~~
include/linux/compiler.h:69:30: note: in definition of macro '__trace_if'
69 | ______r = !!(cond); \
| ^~~~
include/asm-generic/bug.h:70:9: note: in expansion of macro 'if'
70 | if (unlikely(__ret_warn_on)) \
| ^~
include/linux/compiler.h:48:26: note: in expansion of macro '__branch_check__'
48 | # define unlikely(x) (__branch_check__(x, 0, __builtin_constant_p(x)))
| ^~~~~~~~~~~~~~~~
include/asm-generic/bug.h:70:13: note: in expansion of macro 'unlikely'
70 | if (unlikely(__ret_warn_on)) \
| ^~~~~~~~
arch/powerpc/lib/sstep.c:2738:25: note: in expansion of macro 'WARN_ON_ONCE'
2738 | WARN_ON_ONCE(1);
| ^~~~~~~~~~~~
include/linux/compiler.h:64:25: note: previous declaration here
64 | ______f = { \
| ^~~~~~~
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
56 | #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
| ^~~~~~~~~~
include/asm-generic/bug.h:70:9: note: in expansion of macro 'if'
70 | if (unlikely(__ret_warn_on)) \
| ^~
arch/powerpc/lib/sstep.c:2738:25: note: in expansion of macro 'WARN_ON_ONCE'
2738 | WARN_ON_ONCE(1);
| ^~~~~~~~~~~~
include/linux/compiler.h:25:39: warning: ignoring attribute 'section ("\"_ftrace_annotated_branch\"")' because it conflicts with previous 'section ("\"_ftrace_branch\"")' [-Wattributes]
25 | static struct ftrace_likely_data \
| ^~~~~~~~~~~~~~~~~~
include/linux/compiler.h:69:30: note: in definition of macro '__trace_if'
69 | ______r = !!(cond); \
| ^~~~
include/asm-generic/bug.h:70:9: note: in expansion of macro 'if'
70 | if (unlikely(__ret_warn_on)) \
| ^~
include/linux/compiler.h:48:26: note: in expansion of macro '__branch_check__'
48 | # define unlikely(x) (__branch_check__(x, 0, __builtin_constant_p(x)))
| ^~~~~~~~~~~~~~~~
include/asm-generic/bug.h:70:13: note: in expansion of macro 'unlikely'
70 | if (unlikely(__ret_warn_on)) \
| ^~~~~~~~
arch/powerpc/lib/sstep.c:2754:25: note: in expansion of macro 'WARN_ON_ONCE'
2754 | WARN_ON_ONCE(1);
| ^~~~~~~~~~~~
include/linux/compiler.h:64:25: note: previous declaration here
64 | ______f = { \
| ^~~~~~~
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
56 | #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
| ^~~~~~~~~~
include/asm-generic/bug.h:70:9: note: in expansion of macro 'if'
70 | if (unlikely(__ret_warn_on)) \
| ^~
arch/powerpc/lib/sstep.c:2754:25: note: in expansion of macro 'WARN_ON_ONCE'
2754 | WARN_ON_ONCE(1);
| ^~~~~~~~~~~~
include/linux/compiler.h:25:39: warning: ignoring attribute 'section ("\"_ftrace_annotated_branch\"")' because it conflicts with previous 'section ("\"_ftrace_branch\"")' [-Wattributes]
25 | static struct ftrace_likely_data \
| ^~~~~~~~~~~~~~~~~~
include/linux/compiler.h:69:30: note: in definition of macro '__trace_if'
69 | ______r = !!(cond); \
| ^~~~
include/asm-generic/bug.h:70:9: note: in expansion of macro 'if'
70 | if (unlikely(__ret_warn_on)) \
| ^~
include/linux/compiler.h:48:26: note: in expansion of macro '__branch_check__'
48 | # define unlikely(x) (__branch_check__(x, 0, __builtin_constant_p(x)))
| ^~~~~~~~~~~~~~~~
include/asm-generic/bug.h:70:13: note: in expansion of macro 'unlikely'
70 | if (unlikely(__ret_warn_on)) \
| ^~~~~~~~
arch/powerpc/lib/sstep.c:2759:17: note: in expansion of macro 'WARN_ON_ONCE'
2759 | WARN_ON_ONCE(1);
| ^~~~~~~~~~~~
include/linux/compiler.h:64:25: note: previous declaration here
64 | ______f = { \
| ^~~~~~~
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
56 | #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
| ^~~~~~~~~~
include/asm-generic/bug.h:70:9: note: in expansion of macro 'if'
70 | if (unlikely(__ret_warn_on)) \
| ^~
arch/powerpc/lib/sstep.c:2759:17: note: in expansion of macro 'WARN_ON_ONCE'
2759 | WARN_ON_ONCE(1);
| ^~~~~~~~~~~~
arch/powerpc/lib/sstep.c: In function 'emulate_loadstore':
include/linux/compiler.h:25:39: warning: ignoring attribute 'section ("\"_ftrace_annotated_branch\"")' because it conflicts with previous 'section ("\"_ftrace_branch\"")' [-Wattributes]
25 | static struct ftrace_likely_data \
| ^~~~~~~~~~~~~~~~~~
include/linux/compiler.h:69:30: note: in definition of macro '__trace_if'
69 | ______r = !!(cond); \
| ^~~~
vim +/rc +1172 arch/powerpc/lib/sstep.c
1157
1158 /*
1159 * Decode an instruction, and return information about it in *op
1160 * without changing *regs.
1161 * Integer arithmetic and logical instructions, branches, and barrier
1162 * instructions can be emulated just using the information in *op.
1163 *
1164 * Return value is 1 if the instruction can be emulated just by
1165 * updating *regs with the information in *op, -1 if we need the
1166 * GPRs but *regs doesn't contain the full register set, or 0
1167 * otherwise.
1168 */
1169 int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
1170 unsigned int instr)
1171 {
> 1172 unsigned int opcode, ra, rb, rc, rd, spr, u;
1173 unsigned long int imm;
1174 unsigned long int val, val2;
1175 unsigned int mb, me, sh;
1176 long ival;
1177
1178 op->type = COMPUTE;
1179
1180 opcode = instr >> 26;
1181 switch (opcode) {
1182 case 16: /* bc */
1183 op->type = BRANCH;
1184 imm = (signed short)(instr & 0xfffc);
1185 if ((instr & 2) == 0)
1186 imm += regs->nip;
1187 op->val = truncate_if_32bit(regs->msr, imm);
1188 if (instr & 1)
1189 op->type |= SETLK;
1190 if (branch_taken(instr, regs, op))
1191 op->type |= BRTAKEN;
1192 return 1;
1193 #ifdef CONFIG_PPC64
1194 case 17: /* sc */
1195 if ((instr & 0xfe2) == 2)
1196 op->type = SYSCALL;
1197 else
1198 op->type = UNKNOWN;
1199 return 0;
1200 #endif
1201 case 18: /* b */
1202 op->type = BRANCH | BRTAKEN;
1203 imm = instr & 0x03fffffc;
1204 if (imm & 0x02000000)
1205 imm -= 0x04000000;
1206 if ((instr & 2) == 0)
1207 imm += regs->nip;
1208 op->val = truncate_if_32bit(regs->msr, imm);
1209 if (instr & 1)
1210 op->type |= SETLK;
1211 return 1;
1212 case 19:
1213 switch ((instr >> 1) & 0x3ff) {
1214 case 0: /* mcrf */
1215 op->type = COMPUTE + SETCC;
1216 rd = 7 - ((instr >> 23) & 0x7);
1217 ra = 7 - ((instr >> 18) & 0x7);
1218 rd *= 4;
1219 ra *= 4;
1220 val = (regs->ccr >> ra) & 0xf;
1221 op->ccval = (regs->ccr & ~(0xfUL << rd)) | (val << rd);
1222 return 1;
1223
1224 case 16: /* bclr */
1225 case 528: /* bcctr */
1226 op->type = BRANCH;
1227 imm = (instr & 0x400)? regs->ctr: regs->link;
1228 op->val = truncate_if_32bit(regs->msr, imm);
1229 if (instr & 1)
1230 op->type |= SETLK;
1231 if (branch_taken(instr, regs, op))
1232 op->type |= BRTAKEN;
1233 return 1;
1234
1235 case 18: /* rfid, scary */
1236 if (regs->msr & MSR_PR)
1237 goto priv;
1238 op->type = RFI;
1239 return 0;
1240
1241 case 150: /* isync */
1242 op->type = BARRIER | BARRIER_ISYNC;
1243 return 1;
1244
1245 case 33: /* crnor */
1246 case 129: /* crandc */
1247 case 193: /* crxor */
1248 case 225: /* crnand */
1249 case 257: /* crand */
1250 case 289: /* creqv */
1251 case 417: /* crorc */
1252 case 449: /* cror */
1253 op->type = COMPUTE + SETCC;
1254 ra = (instr >> 16) & 0x1f;
1255 rb = (instr >> 11) & 0x1f;
1256 rd = (instr >> 21) & 0x1f;
1257 ra = (regs->ccr >> (31 - ra)) & 1;
1258 rb = (regs->ccr >> (31 - rb)) & 1;
1259 val = (instr >> (6 + ra * 2 + rb)) & 1;
1260 op->ccval = (regs->ccr & ~(1UL << (31 - rd))) |
1261 (val << (31 - rd));
1262 return 1;
1263 }
1264 break;
1265 case 31:
1266 switch ((instr >> 1) & 0x3ff) {
1267 case 598: /* sync */
1268 op->type = BARRIER + BARRIER_SYNC;
1269 #ifdef __powerpc64__
1270 switch ((instr >> 21) & 3) {
1271 case 1: /* lwsync */
1272 op->type = BARRIER + BARRIER_LWSYNC;
1273 break;
1274 case 2: /* ptesync */
1275 op->type = BARRIER + BARRIER_PTESYNC;
1276 break;
1277 }
1278 #endif
1279 return 1;
1280
1281 case 854: /* eieio */
1282 op->type = BARRIER + BARRIER_EIEIO;
1283 return 1;
1284 }
1285 break;
1286 }
1287
1288 /* Following cases refer to regs->gpr[], so we need all regs */
1289 if (!FULL_REGS(regs))
1290 return -1;
1291
1292 rd = (instr >> 21) & 0x1f;
1293 ra = (instr >> 16) & 0x1f;
1294 rb = (instr >> 11) & 0x1f;
1295 rc = (instr >> 6) & 0x1f;
1296
1297 switch (opcode) {
1298 #ifdef __powerpc64__
1299 case 2: /* tdi */
1300 if (rd & trap_compare(regs->gpr[ra], (short) instr))
1301 goto trap;
1302 return 1;
1303 #endif
1304 case 3: /* twi */
1305 if (rd & trap_compare((int)regs->gpr[ra], (short) instr))
1306 goto trap;
1307 return 1;
1308
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-01-03 22:11 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-03 22:11 arch/powerpc/lib/sstep.c:1172:38: warning: variable 'rc' set but not used kernel 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.