[H8-ML(1476)] Re: H8/3664 jsr問題
From: Yoshinori Sato <qzb04471@xxxxxxxxxxx>
Date: 2001年12月10日(月)21時32分35秒
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>
スレッド概略
[1414(R)](起点)
 └[1475(U)]
   └[表示中]
     ├[1477(1)]
     └[1478(2)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]