Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc/math-emu: Remove -w build flag and fix warnings

As reported by Nathan, the module_init() macro was not taken into
account because the header was missing. That means spe_mathemu_init()
was never called.

This should have been detected by gcc at build time, but due to
'-w' flag it went undetected.

Removing that flag leads to many warnings hence errors.

Fix those warnings then remove the -w flag.

Reported-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/r/2663961738a46073713786d4efeb53100ca156e7.1662134272.git.christophe.leroy@csgroup.eu

authored by

Christophe Leroy and committed by
Michael Ellerman
7245fc5b cfe0d370

+42 -38
-2
arch/powerpc/math-emu/Makefile
··· 16 16 17 17 CFLAGS_fabs.o = -fno-builtin-fabs 18 18 CFLAGS_math.o = -fno-builtin-fabs 19 - 20 - ccflags-y = -w
+9 -9
arch/powerpc/math-emu/math.c
··· 24 24 FLOATFUNC(mtfsfi); 25 25 26 26 #ifdef CONFIG_MATH_EMULATION_HW_UNIMPLEMENTED 27 - #undef FLOATFUNC(x) 27 + #undef FLOATFUNC 28 28 #define FLOATFUNC(x) static inline int x(void *op1, void *op2, void *op3, \ 29 - void *op4) { } 29 + void *op4) { return 0; } 30 30 #endif 31 31 32 32 FLOATFUNC(fadd); ··· 396 396 397 397 case XCR: 398 398 op0 = (void *)&regs->ccr; 399 - op1 = (void *)((insn >> 23) & 0x7); 399 + op1 = (void *)(long)((insn >> 23) & 0x7); 400 400 op2 = (void *)&current->thread.TS_FPR((insn >> 16) & 0x1f); 401 401 op3 = (void *)&current->thread.TS_FPR((insn >> 11) & 0x1f); 402 402 break; 403 403 404 404 case XCRL: 405 405 op0 = (void *)&regs->ccr; 406 - op1 = (void *)((insn >> 23) & 0x7); 407 - op2 = (void *)((insn >> 18) & 0x7); 406 + op1 = (void *)(long)((insn >> 23) & 0x7); 407 + op2 = (void *)(long)((insn >> 18) & 0x7); 408 408 break; 409 409 410 410 case XCRB: 411 - op0 = (void *)((insn >> 21) & 0x1f); 411 + op0 = (void *)(long)((insn >> 21) & 0x1f); 412 412 break; 413 413 414 414 case XCRI: 415 - op0 = (void *)((insn >> 23) & 0x7); 416 - op1 = (void *)((insn >> 12) & 0xf); 415 + op0 = (void *)(long)((insn >> 23) & 0x7); 416 + op1 = (void *)(long)((insn >> 12) & 0xf); 417 417 break; 418 418 419 419 case XFLB: 420 - op0 = (void *)((insn >> 17) & 0xff); 420 + op0 = (void *)(long)((insn >> 17) & 0xff); 421 421 op1 = (void *)&current->thread.TS_FPR((insn >> 11) & 0x1f); 422 422 break; 423 423
+30 -27
arch/powerpc/math-emu/math_efp.c
··· 219 219 case AB: 220 220 case XCR: 221 221 FP_UNPACK_SP(SA, va.wp + 1); 222 + fallthrough; 222 223 case XB: 223 224 FP_UNPACK_SP(SB, vb.wp + 1); 224 225 break; ··· 228 227 break; 229 228 } 230 229 231 - pr_debug("SA: %ld %08lx %ld (%ld)\n", SA_s, SA_f, SA_e, SA_c); 232 - pr_debug("SB: %ld %08lx %ld (%ld)\n", SB_s, SB_f, SB_e, SB_c); 230 + pr_debug("SA: %d %08x %d (%d)\n", SA_s, SA_f, SA_e, SA_c); 231 + pr_debug("SB: %d %08x %d (%d)\n", SB_s, SB_f, SB_e, SB_c); 233 232 234 233 switch (func) { 235 234 case EFSABS: ··· 280 279 } else { 281 280 SB_e += (func == EFSCTSF ? 31 : 32); 282 281 FP_TO_INT_ROUND_S(vc.wp[1], SB, 32, 283 - (func == EFSCTSF)); 282 + (func == EFSCTSF) ? 1 : 0); 284 283 } 285 284 goto update_regs; 286 285 ··· 289 288 FP_CLEAR_EXCEPTIONS; 290 289 FP_UNPACK_DP(DB, vb.dp); 291 290 292 - pr_debug("DB: %ld %08lx %08lx %ld (%ld)\n", 291 + pr_debug("DB: %d %08x %08x %d (%d)\n", 293 292 DB_s, DB_f1, DB_f0, DB_e, DB_c); 294 293 295 294 FP_CONV(S, D, 1, 2, SR, DB); ··· 303 302 FP_SET_EXCEPTION(FP_EX_INVALID); 304 303 } else { 305 304 FP_TO_INT_ROUND_S(vc.wp[1], SB, 32, 306 - ((func & 0x3) != 0)); 305 + ((func & 0x3) != 0) ? 1 : 0); 307 306 } 308 307 goto update_regs; 309 308 ··· 314 313 FP_SET_EXCEPTION(FP_EX_INVALID); 315 314 } else { 316 315 FP_TO_INT_S(vc.wp[1], SB, 32, 317 - ((func & 0x3) != 0)); 316 + ((func & 0x3) != 0) ? 1 : 0); 318 317 } 319 318 goto update_regs; 320 319 ··· 324 323 break; 325 324 326 325 pack_s: 327 - pr_debug("SR: %ld %08lx %ld (%ld)\n", SR_s, SR_f, SR_e, SR_c); 326 + pr_debug("SR: %d %08x %d (%d)\n", SR_s, SR_f, SR_e, SR_c); 328 327 329 328 FP_PACK_SP(vc.wp + 1, SR); 330 329 goto update_regs; ··· 348 347 case AB: 349 348 case XCR: 350 349 FP_UNPACK_DP(DA, va.dp); 350 + fallthrough; 351 351 case XB: 352 352 FP_UNPACK_DP(DB, vb.dp); 353 353 break; ··· 357 355 break; 358 356 } 359 357 360 - pr_debug("DA: %ld %08lx %08lx %ld (%ld)\n", 358 + pr_debug("DA: %d %08x %08x %d (%d)\n", 361 359 DA_s, DA_f1, DA_f0, DA_e, DA_c); 362 - pr_debug("DB: %ld %08lx %08lx %ld (%ld)\n", 360 + pr_debug("DB: %d %08x %08x %d (%d)\n", 363 361 DB_s, DB_f1, DB_f0, DB_e, DB_c); 364 362 365 363 switch (func) { ··· 411 409 } else { 412 410 DB_e += (func == EFDCTSF ? 31 : 32); 413 411 FP_TO_INT_ROUND_D(vc.wp[1], DB, 32, 414 - (func == EFDCTSF)); 412 + (func == EFDCTSF) ? 1 : 0); 415 413 } 416 414 goto update_regs; 417 415 ··· 420 418 FP_CLEAR_EXCEPTIONS; 421 419 FP_UNPACK_SP(SB, vb.wp + 1); 422 420 423 - pr_debug("SB: %ld %08lx %ld (%ld)\n", 421 + pr_debug("SB: %d %08x %d (%d)\n", 424 422 SB_s, SB_f, SB_e, SB_c); 425 423 426 424 FP_CONV(D, S, 2, 1, DR, SB); ··· 434 432 FP_SET_EXCEPTION(FP_EX_INVALID); 435 433 } else { 436 434 FP_TO_INT_D(vc.dp[0], DB, 64, 437 - ((func & 0x1) == 0)); 435 + ((func & 0x1) == 0) ? 1 : 0); 438 436 } 439 437 goto update_regs; 440 438 ··· 445 443 FP_SET_EXCEPTION(FP_EX_INVALID); 446 444 } else { 447 445 FP_TO_INT_ROUND_D(vc.wp[1], DB, 32, 448 - ((func & 0x3) != 0)); 446 + ((func & 0x3) != 0) ? 1 : 0); 449 447 } 450 448 goto update_regs; 451 449 ··· 456 454 FP_SET_EXCEPTION(FP_EX_INVALID); 457 455 } else { 458 456 FP_TO_INT_D(vc.wp[1], DB, 32, 459 - ((func & 0x3) != 0)); 457 + ((func & 0x3) != 0) ? 1 : 0); 460 458 } 461 459 goto update_regs; 462 460 ··· 466 464 break; 467 465 468 466 pack_d: 469 - pr_debug("DR: %ld %08lx %08lx %ld (%ld)\n", 467 + pr_debug("DR: %d %08x %08x %d (%d)\n", 470 468 DR_s, DR_f1, DR_f0, DR_e, DR_c); 471 469 472 470 FP_PACK_DP(vc.dp, DR); ··· 495 493 case XCR: 496 494 FP_UNPACK_SP(SA0, va.wp); 497 495 FP_UNPACK_SP(SA1, va.wp + 1); 496 + fallthrough; 498 497 case XB: 499 498 FP_UNPACK_SP(SB0, vb.wp); 500 499 FP_UNPACK_SP(SB1, vb.wp + 1); ··· 506 503 break; 507 504 } 508 505 509 - pr_debug("SA0: %ld %08lx %ld (%ld)\n", 506 + pr_debug("SA0: %d %08x %d (%d)\n", 510 507 SA0_s, SA0_f, SA0_e, SA0_c); 511 - pr_debug("SA1: %ld %08lx %ld (%ld)\n", 508 + pr_debug("SA1: %d %08x %d (%d)\n", 512 509 SA1_s, SA1_f, SA1_e, SA1_c); 513 - pr_debug("SB0: %ld %08lx %ld (%ld)\n", 510 + pr_debug("SB0: %d %08x %d (%d)\n", 514 511 SB0_s, SB0_f, SB0_e, SB0_c); 515 - pr_debug("SB1: %ld %08lx %ld (%ld)\n", 512 + pr_debug("SB1: %d %08x %d (%d)\n", 516 513 SB1_s, SB1_f, SB1_e, SB1_c); 517 514 518 515 switch (func) { ··· 571 568 } else { 572 569 SB0_e += (func == EVFSCTSF ? 31 : 32); 573 570 FP_TO_INT_ROUND_S(vc.wp[0], SB0, 32, 574 - (func == EVFSCTSF)); 571 + (func == EVFSCTSF) ? 1 : 0); 575 572 } 576 573 if (SB1_c == FP_CLS_NAN) { 577 574 vc.wp[1] = 0; ··· 579 576 } else { 580 577 SB1_e += (func == EVFSCTSF ? 31 : 32); 581 578 FP_TO_INT_ROUND_S(vc.wp[1], SB1, 32, 582 - (func == EVFSCTSF)); 579 + (func == EVFSCTSF) ? 1 : 0); 583 580 } 584 581 goto update_regs; 585 582 ··· 590 587 FP_SET_EXCEPTION(FP_EX_INVALID); 591 588 } else { 592 589 FP_TO_INT_ROUND_S(vc.wp[0], SB0, 32, 593 - ((func & 0x3) != 0)); 590 + ((func & 0x3) != 0) ? 1 : 0); 594 591 } 595 592 if (SB1_c == FP_CLS_NAN) { 596 593 vc.wp[1] = 0; 597 594 FP_SET_EXCEPTION(FP_EX_INVALID); 598 595 } else { 599 596 FP_TO_INT_ROUND_S(vc.wp[1], SB1, 32, 600 - ((func & 0x3) != 0)); 597 + ((func & 0x3) != 0) ? 1 : 0); 601 598 } 602 599 goto update_regs; 603 600 ··· 608 605 FP_SET_EXCEPTION(FP_EX_INVALID); 609 606 } else { 610 607 FP_TO_INT_S(vc.wp[0], SB0, 32, 611 - ((func & 0x3) != 0)); 608 + ((func & 0x3) != 0) ? 1 : 0); 612 609 } 613 610 if (SB1_c == FP_CLS_NAN) { 614 611 vc.wp[1] = 0; 615 612 FP_SET_EXCEPTION(FP_EX_INVALID); 616 613 } else { 617 614 FP_TO_INT_S(vc.wp[1], SB1, 32, 618 - ((func & 0x3) != 0)); 615 + ((func & 0x3) != 0) ? 1 : 0); 619 616 } 620 617 goto update_regs; 621 618 ··· 625 622 break; 626 623 627 624 pack_vs: 628 - pr_debug("SR0: %ld %08lx %ld (%ld)\n", 625 + pr_debug("SR0: %d %08x %d (%d)\n", 629 626 SR0_s, SR0_f, SR0_e, SR0_c); 630 - pr_debug("SR1: %ld %08lx %ld (%ld)\n", 627 + pr_debug("SR1: %d %08x %d (%d)\n", 631 628 SR1_s, SR1_f, SR1_e, SR1_c); 632 629 633 630 FP_PACK_SP(vc.wp, SR0);
+3
include/math-emu/op-common.h
··· 662 662 if (X##_e < 0) \ 663 663 { \ 664 664 FP_SET_EXCEPTION(FP_EX_INEXACT); \ 665 + fallthrough; \ 665 666 case FP_CLS_ZERO: \ 666 667 r = 0; \ 667 668 } \ 668 669 else if (X##_e >= rsize - (rsigned > 0 || X##_s) \ 669 670 || (!rsigned && X##_s)) \ 670 671 { /* overflow */ \ 672 + fallthrough; \ 671 673 case FP_CLS_NAN: \ 672 674 case FP_CLS_INF: \ 673 675 if (rsigned == 2) \ ··· 769 767 if (X##_e >= rsize - (rsigned > 0 || X##_s) \ 770 768 || (!rsigned && X##_s)) \ 771 769 { /* overflow */ \ 770 + fallthrough; \ 772 771 case FP_CLS_NAN: \ 773 772 case FP_CLS_INF: \ 774 773 if (!rsigned) \