From: SUGIOKA T. <su...@it...> - 2002-04-12 03:03:31
|
"__clear_user" seems broken. Hear is a patch. I will commit soon if no objection. --- arch/sh/mm/clear_page.S~ Thu Apr 11 17:45:31 2002 +++ arch/sh/mm/clear_page.S Fri Apr 12 11:34:22 2002 @@ -58,17 +58,19 @@ mov #0, r0 mov #0xe0, r1 ! 0xffffffe0 ! - ! r4..r4&~32 -------- not aligned [ Area 0 ] - ! r4&~32..(r4+r5)&~32 -------- aligned [ Area 1 ] - ! (r4+r5)&~32..r4+r5 -------- not aligned [ Area 2 ] + ! r4..(r4+31)&~32 -------- not aligned [ Area 0 ] + ! (r4+31)&~32..(r4+r5)&~32 -------- aligned [ Area 1 ] + ! (r4+r5)&~32..r4+r5 -------- not aligned [ Area 2 ] ! ! Clear area 0 mov r4, r2 + add #31, r2 and r1, r2 cmp/eq r4, r2 - bt/s area1 - mov r4, r3 - sub r2, r3 + bt area1 + mov r2, r3 + sub r4, r3 + mov r3, r7 mov r4, r2 ! l0: dt r3 @@ -76,12 +78,16 @@ bf/s l0 add #1, r2 ! + sub r7, r5 + mov r2, r4 +area1: mov r4, r3 add r5, r3 and r1, r3 + cmp/hi r2, r3 + bf area2 ! ! Clear area 1 -area1: #if defined(__SH4__) 1: movca.l r0, @r2 #else @@ -107,22 +113,24 @@ nop ! ! Clear area 2 - add r5, r4 - cmp/eq r4, r2 +area2: + mov r4, r3 + add r5, r3 + cmp/hs r2, r3 bt/s done - sub r2, r4 -l2: dt r4 + sub r2, r3 +l2: dt r3 9: mov.b r0, @r2 bf/s l2 add #1, r2 ! done: rts - nop ! return 0 as normal return + mov #0, r0 ! return 0 as normal return ! return the number of bytes remained bad_clear_user: mov r4, r0 - mov r5, r0 + add r5, r0 rts sub r2, r0 ---- SUGIOKA Toshinobu |