diff options
Diffstat (limited to 'arch/powerpc/mm/hash_low_64.S')
-rw-r--r-- | arch/powerpc/mm/hash_low_64.S | 156 |
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 | */ |
257 | htab_write_out_pte: | 249 | htab_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 |
261 | htab_bail: | 253 | htab_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 | ||
313 | htab_pte_insert_failure: | 305 | htab_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 |
599 | htab_bail: | 591 | htab_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 | ||
658 | htab_pte_insert_failure: | 650 | htab_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 | */ |
878 | ht64_write_out_pte: | 870 | ht64_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 |
882 | ht64_bail: | 874 | ht64_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 | ||
934 | ht64_pte_insert_failure: | 926 | ht64_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 |