--- linux-2.4.16-akm/arch/ia64/lib/clear_page.S Fri Nov 9 14:26:17 2001 +++ linux/arch/ia64/lib/clear_page.S Wed Apr 10 17:32:26 2002 @@ -23,15 +23,18 @@ #define dst2 r9 #define dst3 r10 #define dst_fetch r11 +#define dst_last r14 GLOBAL_ENTRY(clear_page) .prologue .regstk 1,0,0,0 mov r16 = PAGE_SIZE/64-1 // -1 = repeat/until + mov r17 = PAGE_SIZE ;; .save ar.lc, saved_lc mov saved_lc = ar.lc .body + add dst_last = r17, dst0 mov ar.lc = r16 adds dst1 = 16, dst0 adds dst2 = 32, dst0 @@ -40,10 +43,12 @@ ;; 1: stf.spill.nta [dst0] = f0, 64 stf.spill.nta [dst1] = f0, 64 + cmp.ltu p6,p0 = dst_fetch, dst_last stf.spill.nta [dst2] = f0, 64 stf.spill.nta [dst3] = f0, 64 + ;; - lfetch [dst_fetch], 64 +(p6) lfetch [dst_fetch], 64 br.cloop.dptk.few 1b ;; mov ar.lc = r2 // restore lc