[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: new MIPS cache ops and R4000/4400 with L2 cache
<200111261330.fAQDUIv22818@mirage.ceres.dti.ne.jp>の記事において
私は書きました。
> self で作った kernel だと全然 multi-user にたどり着けません。
> cross で作った kernel だと make build も問題ないんですが。
> どのファイルを self で作るとダメなのかも確認してみます。
いろいろ調べた結果、どうも mips/mips/locore.S が原因のようです。
locore.o を i386 上の cross で作ると動く kernel ができますが
arc 上の native な as で作るとまともに動かない kernel になります。
(link をどちらのマシンでやっても同じ)
asm のくせになにが違うのか、と調べてみると 1305行目からの
---
/*
* Send a floating point exception signal to the current process.
*/
li t0, 0xFFFFFF00
and a1, a1, t0
---
のところが
pkgsrc の cross の as だと
---
a04: 3c08ffff lui $t0,0xffff
a08: 3508ff00 ori $t0,$t0,0xff00
a0c: 00a82824 and $a1,$a1,$t0
---
in-tree の native の as だと
---
a04: 2408ff00 li $t0,-256
a08: 00a82824 and $a1,$a1,$t0
---
になってました。
これは
・native の as が吐くコードがおかしい
・コードは正しくて動かないのがおかしい
のどちらなんでしょう?
FP まわりのルーチンだし arc だけってのも変だし
そもそも thorpej-mips-cache での変更箇所でもないので
これが関係あるのかどうかよくわかりませんが…
---
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp