[Suzaku:01528] Re: エラー表示の解析方法について

mizo email@hidden
2009年 6月 24日 (水) 13:45:51 JST


溝渕です。

菊地 義和 wrote:
> c0045bdc <kmem_cache_alloc>:
> c0045bdc: 3021ffe0  addik r1, r1, -32
> c0045be0: f9e10000  swi r15, r1, 0
> c0045be4: fa61001c  swi r19, r1, 28
> c0045be8: 96710002  msrclr r19, 2
> c0045bec: 80000000  or r0, r0, r0
> c0045bf0: e8e50000  lwi r7, r5, 0        ←RPCはここを指していました。
> c0045bf4: e8870000  lwi r4, r7, 0
> c0045bf8: 3104ffff  addik r8, r4, -1
> c0045bfc: 64680402  bslli r3, r8, 2
> c0045c00: be040034  beqid r4, 52  // c0045c34
> 
> それで、続いてアドバイスいただけますでしょうか。
> 
> ・インストラクション「lwi r7, r5, 0」は
> 「kmem_cache_alloc」というラベル(関数)の内部であると
> 理解しましたが、そうでしょうか。
そうです。

> ・関数「kmem_cache_alloc」は当方のソフトからは
> 実行していないのですが、どのようなときに実行される
> と考えられるのでしょうか。
自分で書いたコードで直接実行していなくても、カーネルで用意されている関数
を使用している場合は、呼ばれる可能性はあると思います。

例えば、printk()しか使っていなくても、vprintk()が呼ばれたりすると思います。

エラー発生場所から、grepやetagsやglobalを使うなどして追っていくと
kmem_cache_allocにたどりつくと思います。

> ・先にお送りしたレジスタ情報と上記逆アセンブルの
> 結果から、次に確認すべき点はどのような箇所になる
> のでしょうか。
lwi r7, r5, 0
で使用しているレジスタの値を確認して、それらの値が適切であるかどうかを判
断します。



suzaku メーリングリストの案内