aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/mm/hash_low_64.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/mm/hash_low_64.S')
-rw-r--r--arch/powerpc/mm/hash_low_64.S156
1 files changed, 74 insertions, 82 deletions
diff --git a/arch/powerpc/mm/hash_low_64.S b/arch/powerpc/mm/hash_low_64.S
index a242b5d7cbe4..602aeb06d298 100644
--- a/arch/powerpc/mm/hash_low_64.S
+++ b/arch/powerpc/mm/hash_low_64.S
@@ -34,14 +34,6 @@
34 * | CR save area (SP + 8) 34 * | CR save area (SP + 8)
35 * SP ---> +-- Back chain (SP + 0) 35 * SP ---> +-- Back chain (SP + 0)
36 */ 36 */
37#define STACKFRAMESIZE 256
38
39/* Save parameters offsets */
40#define STK_PARM(i) (STACKFRAMESIZE + 48 + ((i)-3)*8)
41
42/* Save non-volatile offsets */
43#define STK_REG(i) (112 + ((i)-14)*8)
44
45 37
46#ifndef CONFIG_PPC_64K_PAGES 38#ifndef CONFIG_PPC_64K_PAGES
47 39
@@ -64,9 +56,9 @@ _GLOBAL(__hash_page_4K)
64 std r0,16(r1) 56 std r0,16(r1)
65 stdu r1,-STACKFRAMESIZE(r1) 57 stdu r1,-STACKFRAMESIZE(r1)
66 /* Save all params that we need after a function call */ 58 /* Save all params that we need after a function call */
67 std r6,STK_PARM(r6)(r1) 59 std r6,STK_PARAM(R6)(r1)
68 std r8,STK_PARM(r8)(r1) 60 std r8,STK_PARAM(R8)(r1)
69 std r9,STK_PARM(r9)(r1) 61 std r9,STK_PARAM(R9)(r1)
70 62
71 /* Save non-volatile registers. 63 /* Save non-volatile registers.
72 * r31 will hold "old PTE" 64 * r31 will hold "old PTE"
@@ -75,11 +67,11 @@ _GLOBAL(__hash_page_4K)
75 * r28 is a hash value 67 * r28 is a hash value
76 * r27 is hashtab mask (maybe dynamic patched instead ?) 68 * r27 is hashtab mask (maybe dynamic patched instead ?)
77 */ 69 */
78 std r27,STK_REG(r27)(r1) 70 std r27,STK_REG(R27)(r1)
79 std r28,STK_REG(r28)(r1) 71 std r28,STK_REG(R28)(r1)
80 std r29,STK_REG(r29)(r1) 72 std r29,STK_REG(R29)(r1)
81 std r30,STK_REG(r30)(r1) 73 std r30,STK_REG(R30)(r1)
82 std r31,STK_REG(r31)(r1) 74 std r31,STK_REG(R31)(r1)
83 75
84 /* Step 1: 76 /* Step 1:
85 * 77 *
@@ -162,7 +154,7 @@ END_FTR_SECTION(CPU_FTR_NOEXECUTE|CPU_FTR_COHERENT_ICACHE, CPU_FTR_NOEXECUTE)
162 /* At this point, r3 contains new PP bits, save them in 154 /* At this point, r3 contains new PP bits, save them in
163 * place of "access" in the param area (sic) 155 * place of "access" in the param area (sic)
164 */ 156 */
165 std r3,STK_PARM(r4)(r1) 157 std r3,STK_PARAM(R4)(r1)
166 158
167 /* Get htab_hash_mask */ 159 /* Get htab_hash_mask */
168 ld r4,htab_hash_mask@got(2) 160 ld r4,htab_hash_mask@got(2)
@@ -192,11 +184,11 @@ htab_insert_pte:
192 rldicr r3,r0,3,63-3 /* r3 = (hash & mask) << 3 */ 184 rldicr r3,r0,3,63-3 /* r3 = (hash & mask) << 3 */
193 185
194 /* Call ppc_md.hpte_insert */ 186 /* Call ppc_md.hpte_insert */
195 ld r6,STK_PARM(r4)(r1) /* Retrieve new pp bits */ 187 ld r6,STK_PARAM(R4)(r1) /* Retrieve new pp bits */
196 mr r4,r29 /* Retrieve va */ 188 mr r4,r29 /* Retrieve va */
197 li r7,0 /* !bolted, !secondary */ 189 li r7,0 /* !bolted, !secondary */
198 li r8,MMU_PAGE_4K /* page size */ 190 li r8,MMU_PAGE_4K /* page size */
199 ld r9,STK_PARM(r9)(r1) /* segment size */ 191 ld r9,STK_PARAM(R9)(r1) /* segment size */
200_GLOBAL(htab_call_hpte_insert1) 192_GLOBAL(htab_call_hpte_insert1)
201 bl . /* Patched by htab_finish_init() */ 193 bl . /* Patched by htab_finish_init() */
202 cmpdi 0,r3,0 194 cmpdi 0,r3,0
@@ -215,11 +207,11 @@ _GLOBAL(htab_call_hpte_insert1)
215 rldicr r3,r0,3,63-3 /* r0 = (~hash & mask) << 3 */ 207 rldicr r3,r0,3,63-3 /* r0 = (~hash & mask) << 3 */
216 208
217 /* Call ppc_md.hpte_insert */ 209 /* Call ppc_md.hpte_insert */
218 ld r6,STK_PARM(r4)(r1) /* Retrieve new pp bits */ 210 ld r6,STK_PARAM(R4)(r1) /* Retrieve new pp bits */
219 mr r4,r29 /* Retrieve va */ 211 mr r4,r29 /* Retrieve va */
220 li r7,HPTE_V_SECONDARY /* !bolted, secondary */ 212 li r7,HPTE_V_SECONDARY /* !bolted, secondary */
221 li r8,MMU_PAGE_4K /* page size */ 213 li r8,MMU_PAGE_4K /* page size */
222 ld r9,STK_PARM(r9)(r1) /* segment size */ 214 ld r9,STK_PARAM(R9)(r1) /* segment size */
223_GLOBAL(htab_call_hpte_insert2) 215_GLOBAL(htab_call_hpte_insert2)
224 bl . /* Patched by htab_finish_init() */ 216 bl . /* Patched by htab_finish_init() */
225 cmpdi 0,r3,0 217 cmpdi 0,r3,0
@@ -255,15 +247,15 @@ htab_pte_insert_ok:
255 * (maybe add eieio may be good still ?) 247 * (maybe add eieio may be good still ?)
256 */ 248 */
257htab_write_out_pte: 249htab_write_out_pte:
258 ld r6,STK_PARM(r6)(r1) 250 ld r6,STK_PARAM(R6)(r1)
259 std r30,0(r6) 251 std r30,0(r6)
260 li r3, 0 252 li r3, 0
261htab_bail: 253htab_bail:
262 ld r27,STK_REG(r27)(r1) 254 ld r27,STK_REG(R27)(r1)
263 ld r28,STK_REG(r28)(r1) 255 ld r28,STK_REG(R28)(r1)
264 ld r29,STK_REG(r29)(r1) 256 ld r29,STK_REG(R29)(r1)
265 ld r30,STK_REG(r30)(r1) 257 ld r30,STK_REG(R30)(r1)
266 ld r31,STK_REG(r31)(r1) 258 ld r31,STK_REG(R31)(r1)
267 addi r1,r1,STACKFRAMESIZE 259 addi r1,r1,STACKFRAMESIZE
268 ld r0,16(r1) 260 ld r0,16(r1)
269 mtlr r0 261 mtlr r0
@@ -288,8 +280,8 @@ htab_modify_pte:
288 /* Call ppc_md.hpte_updatepp */ 280 /* Call ppc_md.hpte_updatepp */
289 mr r5,r29 /* va */ 281 mr r5,r29 /* va */
290 li r6,MMU_PAGE_4K /* page size */ 282 li r6,MMU_PAGE_4K /* page size */
291 ld r7,STK_PARM(r9)(r1) /* segment size */ 283 ld r7,STK_PARAM(R9)(r1) /* segment size */
292 ld r8,STK_PARM(r8)(r1) /* get "local" param */ 284 ld r8,STK_PARAM(R8)(r1) /* get "local" param */
293_GLOBAL(htab_call_hpte_updatepp) 285_GLOBAL(htab_call_hpte_updatepp)
294 bl . /* Patched by htab_finish_init() */ 286 bl . /* Patched by htab_finish_init() */
295 287
@@ -312,7 +304,7 @@ htab_wrong_access:
312 304
313htab_pte_insert_failure: 305htab_pte_insert_failure:
314 /* Bail out restoring old PTE */ 306 /* Bail out restoring old PTE */
315 ld r6,STK_PARM(r6)(r1) 307 ld r6,STK_PARAM(R6)(r1)
316 std r31,0(r6) 308 std r31,0(r6)
317 li r3,-1 309 li r3,-1
318 b htab_bail 310 b htab_bail
@@ -340,9 +332,9 @@ _GLOBAL(__hash_page_4K)
340 std r0,16(r1) 332 std r0,16(r1)
341 stdu r1,-STACKFRAMESIZE(r1) 333 stdu r1,-STACKFRAMESIZE(r1)
342 /* Save all params that we need after a function call */ 334 /* Save all params that we need after a function call */
343 std r6,STK_PARM(r6)(r1) 335 std r6,STK_PARAM(R6)(r1)
344 std r8,STK_PARM(r8)(r1) 336 std r8,STK_PARAM(R8)(r1)
345 std r9,STK_PARM(r9)(r1) 337 std r9,STK_PARAM(R9)(r1)
346 338
347 /* Save non-volatile registers. 339 /* Save non-volatile registers.
348 * r31 will hold "old PTE" 340 * r31 will hold "old PTE"
@@ -353,13 +345,13 @@ _GLOBAL(__hash_page_4K)
353 * r26 is the hidx mask 345 * r26 is the hidx mask
354 * r25 is the index in combo page 346 * r25 is the index in combo page
355 */ 347 */
356 std r25,STK_REG(r25)(r1) 348 std r25,STK_REG(R25)(r1)
357 std r26,STK_REG(r26)(r1) 349 std r26,STK_REG(R26)(r1)
358 std r27,STK_REG(r27)(r1) 350 std r27,STK_REG(R27)(r1)
359 std r28,STK_REG(r28)(r1) 351 std r28,STK_REG(R28)(r1)
360 std r29,STK_REG(r29)(r1) 352 std r29,STK_REG(R29)(r1)
361 std r30,STK_REG(r30)(r1) 353 std r30,STK_REG(R30)(r1)
362 std r31,STK_REG(r31)(r1) 354 std r31,STK_REG(R31)(r1)
363 355
364 /* Step 1: 356 /* Step 1:
365 * 357 *
@@ -452,7 +444,7 @@ END_FTR_SECTION(CPU_FTR_NOEXECUTE|CPU_FTR_COHERENT_ICACHE, CPU_FTR_NOEXECUTE)
452 /* At this point, r3 contains new PP bits, save them in 444 /* At this point, r3 contains new PP bits, save them in
453 * place of "access" in the param area (sic) 445 * place of "access" in the param area (sic)
454 */ 446 */
455 std r3,STK_PARM(r4)(r1) 447 std r3,STK_PARAM(R4)(r1)
456 448
457 /* Get htab_hash_mask */ 449 /* Get htab_hash_mask */
458 ld r4,htab_hash_mask@got(2) 450 ld r4,htab_hash_mask@got(2)
@@ -473,7 +465,7 @@ END_FTR_SECTION(CPU_FTR_NOEXECUTE|CPU_FTR_COHERENT_ICACHE, CPU_FTR_NOEXECUTE)
473 andis. r0,r31,_PAGE_COMBO@h 465 andis. r0,r31,_PAGE_COMBO@h
474 beq htab_inval_old_hpte 466 beq htab_inval_old_hpte
475 467
476 ld r6,STK_PARM(r6)(r1) 468 ld r6,STK_PARAM(R6)(r1)
477 ori r26,r6,0x8000 /* Load the hidx mask */ 469 ori r26,r6,0x8000 /* Load the hidx mask */
478 ld r26,0(r26) 470 ld r26,0(r26)
479 addi r5,r25,36 /* Check actual HPTE_SUB bit, this */ 471 addi r5,r25,36 /* Check actual HPTE_SUB bit, this */
@@ -495,11 +487,11 @@ htab_special_pfn:
495 rldicr r3,r0,3,63-3 /* r0 = (hash & mask) << 3 */ 487 rldicr r3,r0,3,63-3 /* r0 = (hash & mask) << 3 */
496 488
497 /* Call ppc_md.hpte_insert */ 489 /* Call ppc_md.hpte_insert */
498 ld r6,STK_PARM(r4)(r1) /* Retrieve new pp bits */ 490 ld r6,STK_PARAM(R4)(r1) /* Retrieve new pp bits */
499 mr r4,r29 /* Retrieve va */ 491 mr r4,r29 /* Retrieve va */
500 li r7,0 /* !bolted, !secondary */ 492 li r7,0 /* !bolted, !secondary */
501 li r8,MMU_PAGE_4K /* page size */ 493 li r8,MMU_PAGE_4K /* page size */
502 ld r9,STK_PARM(r9)(r1) /* segment size */ 494 ld r9,STK_PARAM(R9)(r1) /* segment size */
503_GLOBAL(htab_call_hpte_insert1) 495_GLOBAL(htab_call_hpte_insert1)
504 bl . /* patched by htab_finish_init() */ 496 bl . /* patched by htab_finish_init() */
505 cmpdi 0,r3,0 497 cmpdi 0,r3,0
@@ -522,11 +514,11 @@ _GLOBAL(htab_call_hpte_insert1)
522 rldicr r3,r0,3,63-3 /* r0 = (~hash & mask) << 3 */ 514 rldicr r3,r0,3,63-3 /* r0 = (~hash & mask) << 3 */
523 515
524 /* Call ppc_md.hpte_insert */ 516 /* Call ppc_md.hpte_insert */
525 ld r6,STK_PARM(r4)(r1) /* Retrieve new pp bits */ 517 ld r6,STK_PARAM(R4)(r1) /* Retrieve new pp bits */
526 mr r4,r29 /* Retrieve va */ 518 mr r4,r29 /* Retrieve va */
527 li r7,HPTE_V_SECONDARY /* !bolted, secondary */ 519 li r7,HPTE_V_SECONDARY /* !bolted, secondary */
528 li r8,MMU_PAGE_4K /* page size */ 520 li r8,MMU_PAGE_4K /* page size */
529 ld r9,STK_PARM(r9)(r1) /* segment size */ 521 ld r9,STK_PARAM(R9)(r1) /* segment size */
530_GLOBAL(htab_call_hpte_insert2) 522_GLOBAL(htab_call_hpte_insert2)
531 bl . /* patched by htab_finish_init() */ 523 bl . /* patched by htab_finish_init() */
532 cmpdi 0,r3,0 524 cmpdi 0,r3,0
@@ -559,8 +551,8 @@ htab_inval_old_hpte:
559 mr r4,r31 /* PTE.pte */ 551 mr r4,r31 /* PTE.pte */
560 li r5,0 /* PTE.hidx */ 552 li r5,0 /* PTE.hidx */
561 li r6,MMU_PAGE_64K /* psize */ 553 li r6,MMU_PAGE_64K /* psize */
562 ld r7,STK_PARM(r9)(r1) /* ssize */ 554 ld r7,STK_PARAM(R9)(r1) /* ssize */
563 ld r8,STK_PARM(r8)(r1) /* local */ 555 ld r8,STK_PARAM(R8)(r1) /* local */
564 bl .flush_hash_page 556 bl .flush_hash_page
565 /* Clear out _PAGE_HPTE_SUB bits in the new linux PTE */ 557 /* Clear out _PAGE_HPTE_SUB bits in the new linux PTE */
566 lis r0,_PAGE_HPTE_SUB@h 558 lis r0,_PAGE_HPTE_SUB@h
@@ -576,7 +568,7 @@ htab_pte_insert_ok:
576 /* Insert slot number & secondary bit in PTE second half, 568 /* Insert slot number & secondary bit in PTE second half,
577 * clear _PAGE_BUSY and set approriate HPTE slot bit 569 * clear _PAGE_BUSY and set approriate HPTE slot bit
578 */ 570 */
579 ld r6,STK_PARM(r6)(r1) 571 ld r6,STK_PARAM(R6)(r1)
580 li r0,_PAGE_BUSY 572 li r0,_PAGE_BUSY
581 andc r30,r30,r0 573 andc r30,r30,r0
582 /* HPTE SUB bit */ 574 /* HPTE SUB bit */
@@ -597,13 +589,13 @@ htab_pte_insert_ok:
597 std r30,0(r6) 589 std r30,0(r6)
598 li r3, 0 590 li r3, 0
599htab_bail: 591htab_bail:
600 ld r25,STK_REG(r25)(r1) 592 ld r25,STK_REG(R25)(r1)
601 ld r26,STK_REG(r26)(r1) 593 ld r26,STK_REG(R26)(r1)
602 ld r27,STK_REG(r27)(r1) 594 ld r27,STK_REG(R27)(r1)
603 ld r28,STK_REG(r28)(r1) 595 ld r28,STK_REG(R28)(r1)
604 ld r29,STK_REG(r29)(r1) 596 ld r29,STK_REG(R29)(r1)
605 ld r30,STK_REG(r30)(r1) 597 ld r30,STK_REG(R30)(r1)
606 ld r31,STK_REG(r31)(r1) 598 ld r31,STK_REG(R31)(r1)
607 addi r1,r1,STACKFRAMESIZE 599 addi r1,r1,STACKFRAMESIZE
608 ld r0,16(r1) 600 ld r0,16(r1)
609 mtlr r0 601 mtlr r0
@@ -630,8 +622,8 @@ htab_modify_pte:
630 /* Call ppc_md.hpte_updatepp */ 622 /* Call ppc_md.hpte_updatepp */
631 mr r5,r29 /* va */ 623 mr r5,r29 /* va */
632 li r6,MMU_PAGE_4K /* page size */ 624 li r6,MMU_PAGE_4K /* page size */
633 ld r7,STK_PARM(r9)(r1) /* segment size */ 625 ld r7,STK_PARAM(R9)(r1) /* segment size */
634 ld r8,STK_PARM(r8)(r1) /* get "local" param */ 626 ld r8,STK_PARAM(R8)(r1) /* get "local" param */
635_GLOBAL(htab_call_hpte_updatepp) 627_GLOBAL(htab_call_hpte_updatepp)
636 bl . /* patched by htab_finish_init() */ 628 bl . /* patched by htab_finish_init() */
637 629
@@ -644,7 +636,7 @@ _GLOBAL(htab_call_hpte_updatepp)
644 /* Clear the BUSY bit and Write out the PTE */ 636 /* Clear the BUSY bit and Write out the PTE */
645 li r0,_PAGE_BUSY 637 li r0,_PAGE_BUSY
646 andc r30,r30,r0 638 andc r30,r30,r0
647 ld r6,STK_PARM(r6)(r1) 639 ld r6,STK_PARAM(R6)(r1)
648 std r30,0(r6) 640 std r30,0(r6)
649 li r3,0 641 li r3,0
650 b htab_bail 642 b htab_bail
@@ -657,7 +649,7 @@ htab_wrong_access:
657 649
658htab_pte_insert_failure: 650htab_pte_insert_failure:
659 /* Bail out restoring old PTE */ 651 /* Bail out restoring old PTE */
660 ld r6,STK_PARM(r6)(r1) 652 ld r6,STK_PARAM(R6)(r1)
661 std r31,0(r6) 653 std r31,0(r6)
662 li r3,-1 654 li r3,-1
663 b htab_bail 655 b htab_bail
@@ -677,9 +669,9 @@ _GLOBAL(__hash_page_64K)
677 std r0,16(r1) 669 std r0,16(r1)
678 stdu r1,-STACKFRAMESIZE(r1) 670 stdu r1,-STACKFRAMESIZE(r1)
679 /* Save all params that we need after a function call */ 671 /* Save all params that we need after a function call */
680 std r6,STK_PARM(r6)(r1) 672 std r6,STK_PARAM(R6)(r1)
681 std r8,STK_PARM(r8)(r1) 673 std r8,STK_PARAM(R8)(r1)
682 std r9,STK_PARM(r9)(r1) 674 std r9,STK_PARAM(R9)(r1)
683 675
684 /* Save non-volatile registers. 676 /* Save non-volatile registers.
685 * r31 will hold "old PTE" 677 * r31 will hold "old PTE"
@@ -688,11 +680,11 @@ _GLOBAL(__hash_page_64K)
688 * r28 is a hash value 680 * r28 is a hash value
689 * r27 is hashtab mask (maybe dynamic patched instead ?) 681 * r27 is hashtab mask (maybe dynamic patched instead ?)
690 */ 682 */
691 std r27,STK_REG(r27)(r1) 683 std r27,STK_REG(R27)(r1)
692 std r28,STK_REG(r28)(r1) 684 std r28,STK_REG(R28)(r1)
693 std r29,STK_REG(r29)(r1) 685 std r29,STK_REG(R29)(r1)
694 std r30,STK_REG(r30)(r1) 686 std r30,STK_REG(R30)(r1)
695 std r31,STK_REG(r31)(r1) 687 std r31,STK_REG(R31)(r1)
696 688
697 /* Step 1: 689 /* Step 1:
698 * 690 *
@@ -780,7 +772,7 @@ END_FTR_SECTION(CPU_FTR_NOEXECUTE|CPU_FTR_COHERENT_ICACHE, CPU_FTR_NOEXECUTE)
780 /* At this point, r3 contains new PP bits, save them in 772 /* At this point, r3 contains new PP bits, save them in
781 * place of "access" in the param area (sic) 773 * place of "access" in the param area (sic)
782 */ 774 */
783 std r3,STK_PARM(r4)(r1) 775 std r3,STK_PARAM(R4)(r1)
784 776
785 /* Get htab_hash_mask */ 777 /* Get htab_hash_mask */
786 ld r4,htab_hash_mask@got(2) 778 ld r4,htab_hash_mask@got(2)
@@ -813,11 +805,11 @@ ht64_insert_pte:
813 rldicr r3,r0,3,63-3 /* r0 = (hash & mask) << 3 */ 805 rldicr r3,r0,3,63-3 /* r0 = (hash & mask) << 3 */
814 806
815 /* Call ppc_md.hpte_insert */ 807 /* Call ppc_md.hpte_insert */
816 ld r6,STK_PARM(r4)(r1) /* Retrieve new pp bits */ 808 ld r6,STK_PARAM(R4)(r1) /* Retrieve new pp bits */
817 mr r4,r29 /* Retrieve va */ 809 mr r4,r29 /* Retrieve va */
818 li r7,0 /* !bolted, !secondary */ 810 li r7,0 /* !bolted, !secondary */
819 li r8,MMU_PAGE_64K 811 li r8,MMU_PAGE_64K
820 ld r9,STK_PARM(r9)(r1) /* segment size */ 812 ld r9,STK_PARAM(R9)(r1) /* segment size */
821_GLOBAL(ht64_call_hpte_insert1) 813_GLOBAL(ht64_call_hpte_insert1)
822 bl . /* patched by htab_finish_init() */ 814 bl . /* patched by htab_finish_init() */
823 cmpdi 0,r3,0 815 cmpdi 0,r3,0
@@ -836,11 +828,11 @@ _GLOBAL(ht64_call_hpte_insert1)
836 rldicr r3,r0,3,63-3 /* r0 = (~hash & mask) << 3 */ 828 rldicr r3,r0,3,63-3 /* r0 = (~hash & mask) << 3 */
837 829
838 /* Call ppc_md.hpte_insert */ 830 /* Call ppc_md.hpte_insert */
839 ld r6,STK_PARM(r4)(r1) /* Retrieve new pp bits */ 831 ld r6,STK_PARAM(R4)(r1) /* Retrieve new pp bits */
840 mr r4,r29 /* Retrieve va */ 832 mr r4,r29 /* Retrieve va */
841 li r7,HPTE_V_SECONDARY /* !bolted, secondary */ 833 li r7,HPTE_V_SECONDARY /* !bolted, secondary */
842 li r8,MMU_PAGE_64K 834 li r8,MMU_PAGE_64K
843 ld r9,STK_PARM(r9)(r1) /* segment size */ 835 ld r9,STK_PARAM(R9)(r1) /* segment size */
844_GLOBAL(ht64_call_hpte_insert2) 836_GLOBAL(ht64_call_hpte_insert2)
845 bl . /* patched by htab_finish_init() */ 837 bl . /* patched by htab_finish_init() */
846 cmpdi 0,r3,0 838 cmpdi 0,r3,0
@@ -876,15 +868,15 @@ ht64_pte_insert_ok:
876 * (maybe add eieio may be good still ?) 868 * (maybe add eieio may be good still ?)
877 */ 869 */
878ht64_write_out_pte: 870ht64_write_out_pte:
879 ld r6,STK_PARM(r6)(r1) 871 ld r6,STK_PARAM(R6)(r1)
880 std r30,0(r6) 872 std r30,0(r6)
881 li r3, 0 873 li r3, 0
882ht64_bail: 874ht64_bail:
883 ld r27,STK_REG(r27)(r1) 875 ld r27,STK_REG(R27)(r1)
884 ld r28,STK_REG(r28)(r1) 876 ld r28,STK_REG(R28)(r1)
885 ld r29,STK_REG(r29)(r1) 877 ld r29,STK_REG(R29)(r1)
886 ld r30,STK_REG(r30)(r1) 878 ld r30,STK_REG(R30)(r1)
887 ld r31,STK_REG(r31)(r1) 879 ld r31,STK_REG(R31)(r1)
888 addi r1,r1,STACKFRAMESIZE 880 addi r1,r1,STACKFRAMESIZE
889 ld r0,16(r1) 881 ld r0,16(r1)
890 mtlr r0 882 mtlr r0
@@ -909,8 +901,8 @@ ht64_modify_pte:
909 /* Call ppc_md.hpte_updatepp */ 901 /* Call ppc_md.hpte_updatepp */
910 mr r5,r29 /* va */ 902 mr r5,r29 /* va */
911 li r6,MMU_PAGE_64K 903 li r6,MMU_PAGE_64K
912 ld r7,STK_PARM(r9)(r1) /* segment size */ 904 ld r7,STK_PARAM(R9)(r1) /* segment size */
913 ld r8,STK_PARM(r8)(r1) /* get "local" param */ 905 ld r8,STK_PARAM(R8)(r1) /* get "local" param */
914_GLOBAL(ht64_call_hpte_updatepp) 906_GLOBAL(ht64_call_hpte_updatepp)
915 bl . /* patched by htab_finish_init() */ 907 bl . /* patched by htab_finish_init() */
916 908
@@ -933,7 +925,7 @@ ht64_wrong_access:
933 925
934ht64_pte_insert_failure: 926ht64_pte_insert_failure:
935 /* Bail out restoring old PTE */ 927 /* Bail out restoring old PTE */
936 ld r6,STK_PARM(r6)(r1) 928 ld r6,STK_PARAM(R6)(r1)
937 std r31,0(r6) 929 std r31,0(r6)
938 li r3,-1 930 li r3,-1
939 b ht64_bail 931 b ht64_bail