At Sun, 09 Dec 2001 02:36:14 +0900,
(^o^) Masahiro Ochiai <user@xxxxxxxxxxxxx> wrote:
>
>
> 早速のパッチ有り難うございます。
>
> 私の2.95.2に当ててみましたが、どうも想定通りのコードが出力されませんでした。
>
> やっぱり、
>
> mov.l @(8,er6),er0
>
> となってしまうようです。私の環境がきちんと入れ替わっていない可能性がありますので、
>
> もうちょっと調べてみます。下記のソールをコンパイルしてどうなるか教えていただけると助かります。
>
-mint32を付けていなかったなーと思いつつ試してみました・・・変ですね。
これを↓試してください。
------------------------------------------------------------------------------------
diff -ru gcc-2.95.3/gcc/config/h8300/h8300.c gcc-2.95.3.new/gcc/config/h8300/h8300.c
--- gcc-2.95.3/gcc/config/h8300/h8300.c Thu Jan 25 23:03:29 2001
+++ gcc-2.95.3.new/gcc/config/h8300/h8300.c Mon Dec 10 14:37:00 2001
@@ -1588,6 +1588,8 @@
if (from == ARG_POINTER_REGNUM && to == STACK_POINTER_REGNUM)
offset += UNITS_PER_WORD; /* Skip saved PC */
}
+ if ((TARGET_H8300H || TARGET_H8300S) && TARGET_MODE)
+ offset -= 2;
return offset;
}
diff -ru gcc-2.95.3/gcc/config/h8300/h8300.h gcc-2.95.3.new/gcc/config/h8300/h8300.h
--- gcc-2.95.3/gcc/config/h8300/h8300.h Mon Mar 22 09:08:28 1999
+++ gcc-2.95.3.new/gcc/config/h8300/h8300.h Mon Dec 10 14:37:24 2001
@@ -91,6 +91,8 @@
alignment. */
#define TARGET_ALIGN_300 (target_flags & 8192)
+#define TARGET_MODE (target_flags & 16384)
+
/* Macro to define tables used to set the flags.
This is a list in braces of pairs in braces,
each pair being { "NAME", VALUE }
@@ -110,6 +112,7 @@
{"h", 4096, "Generate H8/300H code"}, \
{"no-h", -4096, "Do not generate H8/300H code"}, \
{"align-300", 8192, "Use H8/300 alignment rules"}, \
+ {"n", 16384, "Normal Mode Stackframe"}, \
{ "", TARGET_DEFAULT, NULL}}
/* Do things that must be done once at start up. */
diff -ru gcc-2.95.3/gcc/config/h8300/t-h8300 gcc-2.95.3.new/gcc/config/h8300/t-h8300
--- gcc-2.95.3/gcc/config/h8300/t-h8300 Thu Dec 17 06:02:56 1998
+++ gcc-2.95.3.new/gcc/config/h8300/t-h8300 Sun Dec 9 16:12:22 2001
@@ -18,8 +18,8 @@
echo '#endif' >> fp-bit.c
cat $(srcdir)/config/fp-bit.c >> fp-bit.c
-MULTILIB_OPTIONS = mh/ms mint32
-MULTILIB_DIRNAMES = h8300h h8300s int32
+MULTILIB_OPTIONS = mh/ms mn mint32
+MULTILIB_DIRNAMES = h8300h h8300s normal int32
MULTILIB_EXCEPTIONS = mint32
LIBGCC = stmp-multilib
------------------------------------------------------------------------------------
テストプログラムのコンパイル結果は、
h8300-hitachi-hms-gcc -mh -mn -mint32 -O -S 1.c
_aaa:
push.l er6
mov.l er7,er6
push.l er4
mov.l @(6,er6),er0
mov.l @(10,er6),er4
jsr @_bbb
mov.l er4,er0
jsr @_bbb
pop.l er4
pop.l er6
rts
になります。
2.95.3のパッチですが、CVSでソースを確認した限りは、2.95.2でも同じなの
で、これでOKだと思います。
--
佐藤 嘉則
<qzb04471@xxxxxxxxxxx>