[Armadillo:00838] Armadillo-9: 大きなkernelではboot不可?

SATO Yusuke email@hidden
2006年 2月 3日 (金) 00:41:13 JST


こんばんわ、佐藤(ゆ)です
Subject変更しました。

06/01/12 に SATO Yusuke<email@hidden> は書きました:
>
> 起動する場合のSystem.mapは、
>
> -------------------------------------------------
> c0014000 A swapper_pg_dir
> c0018000 T __init_begin
> ...
> c027e000 D __data_start
> ...
> c02cf0d0 D _edata
> c02cf0e0 B __bss_start
> ...
> c02db51c B this_is_dummy
> c03e48dc b logbuf_lock
> ...
> c03ff000 B _end
> -------------------------------------------------
>
> となっています。起動しない場合は、
>
> -------------------------------------------------
> c0014000 A swapper_pg_dir
> c0018000 T __init_begin
> ...
> c027e000 D __data_start
> ...
> c02cf0d0 D _edata
> c02cf0e0 B __bss_start
> ...
> c02db51c B this_is_dummy
> c03e4940 b logbuf_lock
> ...
> c03ff060 B _end
> -------------------------------------------------
>
> です。_end と __bss_start のアドレスの差は、
>  起動する場合:   0x0012ff20
>  起動しない場合: 0x0012ff80
> ですね。

素のカーネルで kernel/printk.c でbss使用量を増減させるのではなく、
LIDSパッチをあてたカーネルで、LIDSのbss使用量を増減させる方法で
試してみました。

結果、起動の条件は、少なくとも「bssのサイズが0x0012ff20に収まって
いること」ではなく、「_end のアドレスが 0xc03ff000 より小さいこと」
のように思えました。

c02df280 B __bss_start
c0407360 B _end

では起動せず、

c02df280 B __bss_start
c03fec60 B _end

ならば起動しました。
# __bss_startの位置が以前のメールとは異なります

私もICEは(一応)所持しているので解析できる環境ではあるんですが…
報告だけですみません、とりあえずポストさせていただきます。

なにかわかりましたら教えてください。

--
SATO Yusuke / 佐藤 祐介 <email@hidden>



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