Ticket #11359

hr5000-toppers-gcc でalignedに関する不具合
오픈 날짜: 2007-11-21 09:44 마지막 업데이트: 2007-11-21 09:44

Reporter:
소유자:
(None)
Type:
Status:
Open
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
None

Details

HRPのプロセッサ「mips64」のスタックの整列について、
PizzaFactoryと(MIPSのサイトからダウンロードし
た)SDE
を比較してみました。

PizzaFactoryには、変数属性「aligned」に関係する不具
合がある
ようです。

*PizzaFactory

次のようなGCCを使用しました。
$ hr5000-toppers-gcc.exe -v
Reading specs from
c:/pizzafactory2/pizza/bin/../lib/gcc/hr5000-
toppers/3.4.3/sp
ecs
Configured with: ../src/configure --host=i686-pc-
mingw32 --build=i686-pc-linux-g
nu --target=hr5000-toppers --prefix=/pizza --disable-
tui --disable-shared --disa
ble-nls --enable-sjlj-exceptions --without-iconv
Thread model: single
gcc version 3.4.3 (TOPPERS special)

*SDE

次のようなGCCを使用しました。
$ sde-gcc.exe -v
Reading specs from
/usr/local/sde6.06/bin/../lib/gcc/sde/3.4.4/specs
Configured with: /cygdrive/c/releasetool.tmp/bank-
20070420-1231/B-i386-cygwin/to
olchain/mipssde-6.06.01/configure --target=sde --
prefix=/usr/local/sde6 --enable
-languages=c,c++ --without-newlib --disable-shared --
disable-nls --disable-tui -
-disable-multilib
Thread model: mipssde
gcc version 3.4.4 mipssde-6.06.01-20070420

*変数属性「aligned」を使用しないサンプル「sample2」

次のように作成したファイル「kernel_cfg.s」を確認してみました。
$ make kernel_cfg.s

タスクのスタックについて、コンフィギュレータは、次のようなファイ

「kernel_cfg.c」を出力します。
static __STK_UNIT
__sstack_KERNEL_TASK[__TCOUNT_STK_UNIT(0x2000 +
DEFAULT_SSTKSZ)];
static __STK_UNIT
__sstack_USER_TASK[__TCOUNT_STK_UNIT(DEFAULT_SSTKSZ)];

PizzaFactoryでは、次のようなファイル
「kernel_cfg.s」を出力し
て、スタックが8バイト境界で整列しました。
.lcomm __sstack_KERNEL_TASK,10240
.lcomm __sstack_USER_TASK,2048

SDEでは、次のようなファイル「kernel_cfg.s」を出力して、ス
タックが8バ
イト境界で整列しました。
.section .bss
.align 3
.type __sstack_KERNEL_TASK, @object
.size __sstack_KERNEL_TASK, 10240
__sstack_KERNEL_TASK:
.space 10240
.align 3
.type __sstack_USER_TASK, @object
.size __sstack_USER_TASK, 2048
__sstack_USER_TASK:
.space 2048

*変数属性「aligned」を使用したサンプル「sample2」

タスクのスタックについて、次のようにファイル「kernel_cfg.c」を
変更しました。
static __STK_UNIT
__sstack_KERNEL_TASK[__TCOUNT_STK_UNIT(0x2000 +
DEFAULT_SSTKSZ)] __attribute__((aligned(16)));
static __STK_UNIT
__sstack_USER_TASK[__TCOUNT_STK_UNIT(DEFAULT_SSTKSZ)]
__attribute__((aligned(16)));

PizzaFactoryでは、次のようなファイル
「kernel_cfg.s」を出力し
て、スタックが8バイト境界で整列しました。
.lcomm __sstack_KERNEL_TASK,10240
.lcomm __sstack_USER_TASK,2048

SDEでは、次のようなファイル「kernel_cfg.s」を出力して、ス
タックが16
バイト境界で整列しました。
.section .bss
.align 4
.type __sstack_KERNEL_TASK, @object
.size __sstack_KERNEL_TASK, 10240
__sstack_KERNEL_TASK:
.space 10240
.align 4
.type __sstack_USER_TASK, @object
.size __sstack_USER_TASK, 2048
__sstack_USER_TASK:
.space 2048

Ticket History (0/0 Histories)

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login