[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 メーリングリストの案内