~ubuntu-branches/ubuntu/quantal/linux-ti-omap4/quantal-proposed

« back to all changes in this revision

Viewing changes to arch/sparc/mm/ultra.S

  • Committer: Package Import Robot
  • Author(s): Brad Figg, Brad Figg
  • Date: 2013-06-08 09:09:23 UTC
  • Revision ID: package-import@ubuntu.com-20130608090923-ibtnp6edtrn3sxik
Tags: 3.5.0-226.39
[ Brad Figg ]

UBUNTU: Fixup missing abi files causing FTBS

Show diffs side-by-side

added added

removed removed

Lines of Context:
53
53
        nop
54
54
 
55
55
        .align          32
 
56
        .globl          __flush_tlb_page
 
57
__flush_tlb_page:       /* 22 insns */
 
58
        /* %o0 = context, %o1 = vaddr */
 
59
        rdpr            %pstate, %g7
 
60
        andn            %g7, PSTATE_IE, %g2
 
61
        wrpr            %g2, %pstate
 
62
        mov             SECONDARY_CONTEXT, %o4
 
63
        ldxa            [%o4] ASI_DMMU, %g2
 
64
        stxa            %o0, [%o4] ASI_DMMU
 
65
        andcc           %o1, 1, %g0
 
66
        andn            %o1, 1, %o3
 
67
        be,pn           %icc, 1f
 
68
         or             %o3, 0x10, %o3
 
69
        stxa            %g0, [%o3] ASI_IMMU_DEMAP
 
70
1:      stxa            %g0, [%o3] ASI_DMMU_DEMAP
 
71
        membar          #Sync
 
72
        stxa            %g2, [%o4] ASI_DMMU
 
73
        sethi           %hi(KERNBASE), %o4
 
74
        flush           %o4
 
75
        retl
 
76
         wrpr           %g7, 0x0, %pstate
 
77
        nop
 
78
        nop
 
79
        nop
 
80
        nop
 
81
 
 
82
        .align          32
56
83
        .globl          __flush_tlb_pending
57
84
__flush_tlb_pending:    /* 26 insns */
58
85
        /* %o0 = context, %o1 = nr, %o2 = vaddrs[] */
203
230
        retl
204
231
         wrpr           %g7, 0x0, %pstate
205
232
 
 
233
__cheetah_flush_tlb_page:       /* 22 insns */
 
234
        /* %o0 = context, %o1 = vaddr */
 
235
        rdpr            %pstate, %g7
 
236
        andn            %g7, PSTATE_IE, %g2
 
237
        wrpr            %g2, 0x0, %pstate
 
238
        wrpr            %g0, 1, %tl
 
239
        mov             PRIMARY_CONTEXT, %o4
 
240
        ldxa            [%o4] ASI_DMMU, %g2
 
241
        srlx            %g2, CTX_PGSZ1_NUC_SHIFT, %o3
 
242
        sllx            %o3, CTX_PGSZ1_NUC_SHIFT, %o3
 
243
        or              %o0, %o3, %o0   /* Preserve nucleus page size fields */
 
244
        stxa            %o0, [%o4] ASI_DMMU
 
245
        andcc           %o1, 1, %g0
 
246
        be,pn           %icc, 1f
 
247
         andn           %o1, 1, %o3
 
248
        stxa            %g0, [%o3] ASI_IMMU_DEMAP
 
249
1:      stxa            %g0, [%o3] ASI_DMMU_DEMAP
 
250
        membar          #Sync
 
251
        stxa            %g2, [%o4] ASI_DMMU
 
252
        sethi           %hi(KERNBASE), %o4
 
253
        flush           %o4
 
254
        wrpr            %g0, 0, %tl
 
255
        retl
 
256
         wrpr           %g7, 0x0, %pstate
 
257
 
206
258
__cheetah_flush_tlb_pending:    /* 27 insns */
207
259
        /* %o0 = context, %o1 = nr, %o2 = vaddrs[] */
208
260
        rdpr            %pstate, %g7
269
321
        retl
270
322
         nop
271
323
 
 
324
__hypervisor_flush_tlb_page: /* 11 insns */
 
325
        /* %o0 = context, %o1 = vaddr */
 
326
        mov             %o0, %g2
 
327
        mov             %o1, %o0              /* ARG0: vaddr + IMMU-bit */
 
328
        mov             %g2, %o1              /* ARG1: mmu context */
 
329
        mov             HV_MMU_ALL, %o2       /* ARG2: flags */
 
330
        srlx            %o0, PAGE_SHIFT, %o0
 
331
        sllx            %o0, PAGE_SHIFT, %o0
 
332
        ta              HV_MMU_UNMAP_ADDR_TRAP
 
333
        brnz,pn         %o0, __hypervisor_tlb_tl0_error
 
334
         mov            HV_MMU_UNMAP_ADDR_TRAP, %o1
 
335
        retl
 
336
         nop
 
337
 
272
338
__hypervisor_flush_tlb_pending: /* 16 insns */
273
339
        /* %o0 = context, %o1 = nr, %o2 = vaddrs[] */
274
340
        sllx            %o1, 3, %g1
339
405
        call            tlb_patch_one
340
406
         mov            19, %o2
341
407
 
 
408
        sethi           %hi(__flush_tlb_page), %o0
 
409
        or              %o0, %lo(__flush_tlb_page), %o0
 
410
        sethi           %hi(__cheetah_flush_tlb_page), %o1
 
411
        or              %o1, %lo(__cheetah_flush_tlb_page), %o1
 
412
        call            tlb_patch_one
 
413
         mov            22, %o2
 
414
 
342
415
        sethi           %hi(__flush_tlb_pending), %o0
343
416
        or              %o0, %lo(__flush_tlb_pending), %o0
344
417
        sethi           %hi(__cheetah_flush_tlb_pending), %o1
397
470
        nop
398
471
        nop
399
472
 
400
 
        .globl          xcall_flush_tlb_pending
401
 
xcall_flush_tlb_pending:        /* 21 insns */
402
 
        /* %g5=context, %g1=nr, %g7=vaddrs[] */
403
 
        sllx            %g1, 3, %g1
 
473
        .globl          xcall_flush_tlb_page
 
474
xcall_flush_tlb_page:   /* 17 insns */
 
475
        /* %g5=context, %g1=vaddr */
404
476
        mov             PRIMARY_CONTEXT, %g4
405
477
        ldxa            [%g4] ASI_DMMU, %g2
406
478
        srlx            %g2, CTX_PGSZ1_NUC_SHIFT, %g4
408
480
        or              %g5, %g4, %g5
409
481
        mov             PRIMARY_CONTEXT, %g4
410
482
        stxa            %g5, [%g4] ASI_DMMU
411
 
1:      sub             %g1, (1 << 3), %g1
412
 
        ldx             [%g7 + %g1], %g5
413
 
        andcc           %g5, 0x1, %g0
 
483
        andcc           %g1, 0x1, %g0
414
484
        be,pn           %icc, 2f
415
 
 
416
 
         andn           %g5, 0x1, %g5
 
485
         andn           %g1, 0x1, %g5
417
486
        stxa            %g0, [%g5] ASI_IMMU_DEMAP
418
487
2:      stxa            %g0, [%g5] ASI_DMMU_DEMAP
419
488
        membar          #Sync
420
 
        brnz,pt         %g1, 1b
421
 
         nop
422
489
        stxa            %g2, [%g4] ASI_DMMU
423
490
        retry
424
491
        nop
 
492
        nop
425
493
 
426
494
        .globl          xcall_flush_tlb_kernel_range
427
495
xcall_flush_tlb_kernel_range:   /* 25 insns */
596
664
        membar          #Sync
597
665
        retry
598
666
 
599
 
        .globl          __hypervisor_xcall_flush_tlb_pending
600
 
__hypervisor_xcall_flush_tlb_pending: /* 21 insns */
601
 
        /* %g5=ctx, %g1=nr, %g7=vaddrs[], %g2,%g3,%g4,g6=scratch */
602
 
        sllx            %g1, 3, %g1
 
667
        .globl          __hypervisor_xcall_flush_tlb_page
 
668
__hypervisor_xcall_flush_tlb_page: /* 17 insns */
 
669
        /* %g5=ctx, %g1=vaddr */
603
670
        mov             %o0, %g2
604
671
        mov             %o1, %g3
605
672
        mov             %o2, %g4
606
 
1:      sub             %g1, (1 << 3), %g1
607
 
        ldx             [%g7 + %g1], %o0        /* ARG0: virtual address */
 
673
        mov             %g1, %o0                /* ARG0: virtual address */
608
674
        mov             %g5, %o1                /* ARG1: mmu context */
609
675
        mov             HV_MMU_ALL, %o2         /* ARG2: flags */
610
676
        srlx            %o0, PAGE_SHIFT, %o0
613
679
        mov             HV_MMU_UNMAP_ADDR_TRAP, %g6
614
680
        brnz,a,pn       %o0, __hypervisor_tlb_xcall_error
615
681
         mov            %o0, %g5
616
 
        brnz,pt         %g1, 1b
617
 
         nop
618
682
        mov             %g2, %o0
619
683
        mov             %g3, %o1
620
684
        mov             %g4, %o2
697
761
        call            tlb_patch_one
698
762
         mov            10, %o2
699
763
 
 
764
        sethi           %hi(__flush_tlb_page), %o0
 
765
        or              %o0, %lo(__flush_tlb_page), %o0
 
766
        sethi           %hi(__hypervisor_flush_tlb_page), %o1
 
767
        or              %o1, %lo(__hypervisor_flush_tlb_page), %o1
 
768
        call            tlb_patch_one
 
769
         mov            11, %o2
 
770
 
700
771
        sethi           %hi(__flush_tlb_pending), %o0
701
772
        or              %o0, %lo(__flush_tlb_pending), %o0
702
773
        sethi           %hi(__hypervisor_flush_tlb_pending), %o1
728
799
        call            tlb_patch_one
729
800
         mov            21, %o2
730
801
 
731
 
        sethi           %hi(xcall_flush_tlb_pending), %o0
732
 
        or              %o0, %lo(xcall_flush_tlb_pending), %o0
733
 
        sethi           %hi(__hypervisor_xcall_flush_tlb_pending), %o1
734
 
        or              %o1, %lo(__hypervisor_xcall_flush_tlb_pending), %o1
 
802
        sethi           %hi(xcall_flush_tlb_page), %o0
 
803
        or              %o0, %lo(xcall_flush_tlb_page), %o0
 
804
        sethi           %hi(__hypervisor_xcall_flush_tlb_page), %o1
 
805
        or              %o1, %lo(__hypervisor_xcall_flush_tlb_page), %o1
735
806
        call            tlb_patch_one
736
 
         mov            21, %o2
 
807
         mov            17, %o2
737
808
 
738
809
        sethi           %hi(xcall_flush_tlb_kernel_range), %o0
739
810
        or              %o0, %lo(xcall_flush_tlb_kernel_range), %o0