[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gcc-3.1.1



Tsubai Masanari <tsubai@iri.co.jp> writes:

> (その結果 in4_cksum が正しく動かない)

昨日僕も manual 片手に powerpc 版の in4_cksum 読んでいたのですが, それ
自身にも bug ありませんか?

1) 直前の mbuf の checksum の計算の際に unroll された asm code を通っ
て, かつ data の最後が 4byte align されていた場合, 以下の足し算を通る
と桁溢れがおきる.

			if ((2 & (long) w) && (mlen > 1)) {
				sum += *(uint16_t *)w;

2)
			asm volatile(
				"addze 7,7;"		/* clear carry */
				"mtctr %1;"		/* load loop count */

は GPR7 が junk だからいいけど,

			asm volatile(
				"addze %1,%1;"		/* clear carry */
				"mtctr %1;"		/* load loop count */

これは正しくないような気が.

enami.