clear_page.S (e5451c8f8330e03ad3cfa16048b4daf961af434f) | clear_page.S (d3867f0483103b8ff7edfdea3ef1981c03d96891) |
---|---|
1/* clear_page.S: UltraSparc optimized clear page. 2 * 3 * Copyright (C) 1996, 1998, 1999, 2000, 2004 David S. Miller (davem@redhat.com) 4 * Copyright (C) 1997 Jakub Jelinek (jakub@redhat.com) 5 */ 6 7#include <asm/visasm.h> 8#include <asm/thread_info.h> 9#include <asm/page.h> 10#include <asm/pgtable.h> 11#include <asm/spitfire.h> 12#include <asm/head.h> | 1/* clear_page.S: UltraSparc optimized clear page. 2 * 3 * Copyright (C) 1996, 1998, 1999, 2000, 2004 David S. Miller (davem@redhat.com) 4 * Copyright (C) 1997 Jakub Jelinek (jakub@redhat.com) 5 */ 6 7#include <asm/visasm.h> 8#include <asm/thread_info.h> 9#include <asm/page.h> 10#include <asm/pgtable.h> 11#include <asm/spitfire.h> 12#include <asm/head.h> |
13#include <asm/export.h> |
|
13 14 /* What we used to do was lock a TLB entry into a specific 15 * TLB slot, clear the page with interrupts disabled, then 16 * restore the original TLB entry. This was great for 17 * disturbing the TLB as little as possible, but it meant 18 * we had to keep interrupts disabled for a long time. 19 * 20 * Now, we simply use the normal TLB loading mechanism, 21 * and this makes the cpu choose a slot all by itself. 22 * Then we do a normal TLB flush on exit. We need only 23 * disable preemption during the clear. 24 */ 25 26 .text 27 28 .globl _clear_page | 14 15 /* What we used to do was lock a TLB entry into a specific 16 * TLB slot, clear the page with interrupts disabled, then 17 * restore the original TLB entry. This was great for 18 * disturbing the TLB as little as possible, but it meant 19 * we had to keep interrupts disabled for a long time. 20 * 21 * Now, we simply use the normal TLB loading mechanism, 22 * and this makes the cpu choose a slot all by itself. 23 * Then we do a normal TLB flush on exit. We need only 24 * disable preemption during the clear. 25 */ 26 27 .text 28 29 .globl _clear_page |
30 EXPORT_SYMBOL(_clear_page) |
|
29_clear_page: /* %o0=dest */ 30 ba,pt %xcc, clear_page_common 31 clr %o4 32 33 /* This thing is pretty important, it shows up 34 * on the profiles via do_anonymous_page(). 35 */ 36 .align 32 37 .globl clear_user_page | 31_clear_page: /* %o0=dest */ 32 ba,pt %xcc, clear_page_common 33 clr %o4 34 35 /* This thing is pretty important, it shows up 36 * on the profiles via do_anonymous_page(). 37 */ 38 .align 32 39 .globl clear_user_page |
40 EXPORT_SYMBOL(clear_user_page) |
|
38clear_user_page: /* %o0=dest, %o1=vaddr */ 39 lduw [%g6 + TI_PRE_COUNT], %o2 40 sethi %hi(PAGE_OFFSET), %g2 41 sethi %hi(PAGE_SIZE), %o4 42 43 ldx [%g2 + %lo(PAGE_OFFSET)], %g2 44 sethi %hi(PAGE_KERNEL_LOCKED), %g3 45 --- 58 unchanged lines hidden --- | 41clear_user_page: /* %o0=dest, %o1=vaddr */ 42 lduw [%g6 + TI_PRE_COUNT], %o2 43 sethi %hi(PAGE_OFFSET), %g2 44 sethi %hi(PAGE_SIZE), %o4 45 46 ldx [%g2 + %lo(PAGE_OFFSET)], %g2 47 sethi %hi(PAGE_KERNEL_LOCKED), %g3 48 --- 58 unchanged lines hidden --- |