[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.
- References:
- gcc-3.1.1
- From: Tsubai Masanari <tsubai@iri.co.jp>