Skip to content

Commit 423d0e5

Browse files
author
Fox Snowpatch
committed
1 parent 5165c17 commit 423d0e5

File tree

3 files changed

+250
-2
lines changed

3 files changed

+250
-2
lines changed

arch/powerpc/kernel/prom_init_check.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,10 @@ do
7272

7373
# ignore register save/restore funcitons
7474
case $UNDEF in
75-
_restgpr_*|_restgpr0_*|_rest32gpr_*)
75+
_restgpr_*|_restgpr0_*|_restgpr1_*|_rest32gpr_*)
7676
OK=1
7777
;;
78-
_savegpr_*|_savegpr0_*|_save32gpr_*)
78+
_savegpr_*|_savegpr0_*|_restgpr0_*|_save32gpr_*)
7979
OK=1
8080
;;
8181
esac

arch/powerpc/lib/crtsavres.S

+244
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*
44
* Copyright (C) 1995, 1996, 1998, 2000, 2001 Free Software Foundation, Inc.
55
* Copyright 2008 Freescale Semiconductor, Inc.
6+
* Copyright 2024 Raptor Engineering, LLC
67
* Written By Michael Meissner
78
*
89
* Based on gcc/config/rs6000/crtsavres.asm from gcc
@@ -435,6 +436,127 @@ _restgpr0_31:
435436
mtlr r0
436437
blr
437438

439+
.globl _savegpr1_14
440+
_savegpr1_14:
441+
std r14,-144(r12)
442+
.globl _savegpr1_15
443+
_savegpr1_15:
444+
std r15,-136(r12)
445+
.globl _savegpr1_16
446+
_savegpr1_16:
447+
std r16,-128(r12)
448+
.globl _savegpr1_17
449+
_savegpr1_17:
450+
std r17,-120(r12)
451+
.globl _savegpr1_18
452+
_savegpr1_18:
453+
std r18,-112(r12)
454+
.globl _savegpr1_19
455+
_savegpr1_19:
456+
std r19,-104(r12)
457+
.globl _savegpr1_20
458+
_savegpr1_20:
459+
std r20,-96(r12)
460+
.globl _savegpr1_21
461+
_savegpr1_21:
462+
std r21,-88(r12)
463+
.globl _savegpr1_22
464+
_savegpr1_22:
465+
std r22,-80(r12)
466+
.globl _savegpr1_23
467+
_savegpr1_23:
468+
std r23,-72(r12)
469+
.globl _savegpr1_24
470+
_savegpr1_24:
471+
std r24,-64(r12)
472+
.globl _savegpr1_25
473+
_savegpr1_25:
474+
std r25,-56(r12)
475+
.globl _savegpr1_26
476+
_savegpr1_26:
477+
std r26,-48(r12)
478+
.globl _savegpr1_27
479+
_savegpr1_27:
480+
std r27,-40(r12)
481+
.globl _savegpr1_28
482+
_savegpr1_28:
483+
std r28,-32(r12)
484+
.globl _savegpr1_29
485+
_savegpr1_29:
486+
std r29,-24(r12)
487+
.globl _savegpr1_30
488+
_savegpr1_30:
489+
std r30,-16(r12)
490+
.globl _savegpr1_31
491+
_savegpr1_31:
492+
std r31,-8(r12)
493+
std r0,16(r12)
494+
blr
495+
496+
.globl _restgpr1_14
497+
_restgpr1_14:
498+
ld r14,-144(r12)
499+
.globl _restgpr1_15
500+
_restgpr1_15:
501+
ld r15,-136(r12)
502+
.globl _restgpr1_16
503+
_restgpr1_16:
504+
ld r16,-128(r12)
505+
.globl _restgpr1_17
506+
_restgpr1_17:
507+
ld r17,-120(r12)
508+
.globl _restgpr1_18
509+
_restgpr1_18:
510+
ld r18,-112(r12)
511+
.globl _restgpr1_19
512+
_restgpr1_19:
513+
ld r19,-104(r12)
514+
.globl _restgpr1_20
515+
_restgpr1_20:
516+
ld r20,-96(r12)
517+
.globl _restgpr1_21
518+
_restgpr1_21:
519+
ld r21,-88(r12)
520+
.globl _restgpr1_22
521+
_restgpr1_22:
522+
ld r22,-80(r12)
523+
.globl _restgpr1_23
524+
_restgpr1_23:
525+
ld r23,-72(r12)
526+
.globl _restgpr1_24
527+
_restgpr1_24:
528+
ld r24,-64(r12)
529+
.globl _restgpr1_25
530+
_restgpr1_25:
531+
ld r25,-56(r12)
532+
.globl _restgpr1_26
533+
_restgpr1_26:
534+
ld r26,-48(r12)
535+
.globl _restgpr1_27
536+
_restgpr1_27:
537+
ld r27,-40(r12)
538+
.globl _restgpr1_28
539+
_restgpr1_28:
540+
ld r28,-32(r12)
541+
.globl _restgpr1_29
542+
_restgpr1_29:
543+
ld r0,16(r12)
544+
ld r29,-24(r12)
545+
mtlr r0
546+
ld r30,-16(r12)
547+
ld r31,-8(r12)
548+
blr
549+
550+
.globl _restgpr1_30
551+
_restgpr1_30:
552+
ld r30,-16(r12)
553+
.globl _restgpr1_31
554+
_restgpr1_31:
555+
ld r0,16(r12)
556+
ld r31,-8(r12)
557+
mtlr r0
558+
blr
559+
438560
#ifdef CONFIG_ALTIVEC
439561
/* Called with r0 pointing just beyond the end of the vector save area. */
440562

@@ -540,6 +662,128 @@ _restvr_31:
540662

541663
#endif /* CONFIG_ALTIVEC */
542664

665+
#ifdef CONFIG_PPC_FPU
666+
667+
.globl _savefpr_14
668+
_savefpr_14:
669+
stfd f14,-144(r1)
670+
.globl _savefpr_15
671+
_savefpr_15:
672+
stfd f15,-136(r1)
673+
.globl _savefpr_16
674+
_savefpr_16:
675+
stfd f16,-128(r1)
676+
.globl _savefpr_17
677+
_savefpr_17:
678+
stfd f17,-120(r1)
679+
.globl _savefpr_18
680+
_savefpr_18:
681+
stfd f18,-112(r1)
682+
.globl _savefpr_19
683+
_savefpr_19:
684+
stfd f19,-104(r1)
685+
.globl _savefpr_20
686+
_savefpr_20:
687+
stfd f20,-96(r1)
688+
.globl _savefpr_21
689+
_savefpr_21:
690+
stfd f21,-88(r1)
691+
.globl _savefpr_22
692+
_savefpr_22:
693+
stfd f22,-80(r1)
694+
.globl _savefpr_23
695+
_savefpr_23:
696+
stfd f23,-72(r1)
697+
.globl _savefpr_24
698+
_savefpr_24:
699+
stfd f24,-64(r1)
700+
.globl _savefpr_25
701+
_savefpr_25:
702+
stfd f25,-56(r1)
703+
.globl _savefpr_26
704+
_savefpr_26:
705+
stfd f26,-48(r1)
706+
.globl _savefpr_27
707+
_savefpr_27:
708+
stfd f27,-40(r1)
709+
.globl _savefpr_28
710+
_savefpr_28:
711+
stfd f28,-32(r1)
712+
.globl _savefpr_29
713+
_savefpr_29:
714+
stfd f29,-24(r1)
715+
.globl _savefpr_30
716+
_savefpr_30:
717+
stfd f30,-16(r1)
718+
.globl _savefpr_31
719+
_savefpr_31:
720+
stfd f31,-8(r1)
721+
std r0, 16(r1)
722+
blr
723+
724+
.globl _restfpr_14
725+
_restfpr_14:
726+
lfd f14,-144(r1)
727+
.globl _restfpr_15
728+
_restfpr_15:
729+
lfd f15,-136(r1)
730+
.globl _restfpr_16
731+
_restfpr_16:
732+
lfd f16,-128(r1)
733+
.globl _restfpr_17
734+
_restfpr_17:
735+
lfd f17,-120(r1)
736+
.globl _restfpr_18
737+
_restfpr_18:
738+
lfd f18,-112(r1)
739+
.globl _restfpr_19
740+
_restfpr_19:
741+
lfd f19,-104(r1)
742+
.globl _restfpr_20
743+
_restfpr_20:
744+
lfd f20,-96(r1)
745+
.globl _restfpr_21
746+
_restfpr_21:
747+
lfd f21,-88(r1)
748+
.globl _restfpr_22
749+
_restfpr_22:
750+
lfd f22,-80(r1)
751+
.globl _restfpr_23
752+
_restfpr_23:
753+
lfd f23,-72(r1)
754+
.globl _restfpr_24
755+
_restfpr_24:
756+
lfd f24,-64(r1)
757+
.globl _restfpr_25
758+
_restfpr_25:
759+
lfd f25,-56(r1)
760+
.globl _restfpr_26
761+
_restfpr_26:
762+
lfd f26,-48(r1)
763+
.globl _restfpr_27
764+
_restfpr_27:
765+
lfd f27,-40(r1)
766+
.globl _restfpr_28
767+
_restfpr_28:
768+
lfd f28,-32(r1)
769+
.globl _restfpr_29
770+
_restfpr_29:
771+
ld r0, 16(r1)
772+
lfd f29,-24(r1)
773+
mtlr r0
774+
lfd f30,-16(r1)
775+
lfd f31,-8(r1)
776+
blr
777+
.globl _restfpr_30
778+
_restfpr_30:
779+
lfd f30,-16(r1)
780+
.globl _restfpr_31
781+
_restfpr_31:
782+
ld r0, 16(r1)
783+
lfd f31,-8(r1)
784+
785+
#endif /* CONFIG_PPC_FPU */
786+
543787
#endif /* CONFIG_PPC64 */
544788

545789
#endif

scripts/mod/modpost.c

+4
Original file line numberDiff line numberDiff line change
@@ -597,8 +597,12 @@ static int ignore_undef_symbol(struct elf_info *info, const char *symname)
597597
/* Special register function linked on all modules during final link of .ko */
598598
if (strstarts(symname, "_restgpr0_") ||
599599
strstarts(symname, "_savegpr0_") ||
600+
strstarts(symname, "_restgpr1_") ||
601+
strstarts(symname, "_savegpr1_") ||
600602
strstarts(symname, "_restvr_") ||
601603
strstarts(symname, "_savevr_") ||
604+
strstarts(symname, "_restfpr_") ||
605+
strstarts(symname, "_savefpr_") ||
602606
strcmp(symname, ".TOC.") == 0)
603607
return 1;
604608

0 commit comments

Comments
 (0)