Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Dhananjay R. Deshpande" <dhananjayd@kpit.com>
To: <newlib@sources.redhat.com>, <gdb-patches@sources.redhat.com>
Subject: [PATCH] Add support for scanf, gets in h8300 simulator
Date: Tue, 14 May 2002 01:52:00 -0000	[thread overview]
Message-ID: <69595093233BB547BB70CF5E492B63F22C51E1@sohm.kpit.com> (raw)

Hi,

This patch to gdb and newlib adds support for reading from STDIN in h8300 simulator. Currently functions like scanf and gets are not working with h8300 simulator, this patch shall provide that functionality.

For Simulator -
2002-05-14 Dhananjay Deshpande <dhananjayd@kpit.com>
	* include/opcode/h8300.h: Add #define for SYSCALL_READ
	* sim/h8300/compile.c: Convert magic trap 0xC8 into SYSCALL_READ

For Newlib - 
2002-05-14 Dhananjay Deshpande <dhananjayd@kpit.com>
	* newlib/libc/sys/h8300hms/syscalls.c: Moved _read() to read.c
	* newlib/libc/sys/h8300hms/read.c: New file. Magic trap 0xC8 for Simulator
	* newlib/libc/sys/h8300hms/Makeile.in: include new file read.c in lib.a

===================================================================
*** include/opcode/h8300.h	Tue May 14 11:25:29 2002
--- include/opcode/h8300.h.new	Tue May 14 11:25:19 2002
***************
*** 296,300 ****
  #define O_ILL 76
  #define O_ADDS 77
! #define O_SYSCALL 78
  #define O_MOV_TO_REG 79
  #define O_TAS 80
--- 296,300 ----
  #define O_ILL 76
  #define O_ADDS 77
! #define O_SYSCALL_WRITE 78
  #define O_MOV_TO_REG 79
  #define O_TAS 80
***************
*** 305,309 ****
  #define O_STM 86
  #define O_STMAC 87
! #define O_LAST 88
  #define SB 0
  #define SW 1
--- 305,310 ----
  #define O_STM 86
  #define O_STMAC 87
! #define O_SYSCALL_READ 88
! #define O_LAST 89
  #define SB 0
  #define SW 1

===================================================================
*** sim/h8300/compile.c	Tue May 14 11:19:24 2002
--- sim/h8300/compile.c.new	Tue May 14 11:19:19 2002
***************
*** 433,437 ****
  		  dst->cycles = q->time;
  
! 		  /* And a jsr to 0xc4 is turned into a magic trap.  */
  
  		  if (dst->opcode == O (O_JSR, SB))
--- 433,437 ----
  		  dst->cycles = q->time;
  
! 		  /* And a jsr to 0xc4 and 0xc8 is turned into a magic trap.  */
  
  		  if (dst->opcode == O (O_JSR, SB))
***************
*** 439,443 ****
  		      if (dst->src.literal == 0xc4)
  			{
! 			  dst->opcode = O (O_SYSCALL, SB);
  			}
  		    }
--- 439,448 ----
  		      if (dst->src.literal == 0xc4)
  			{
! 			  dst->opcode = O (O_SYSCALL_WRITE, SB);
! 			}
! 		      else
! 		      if (dst->src.literal == 0xc8)
! 			{
! 			  dst->opcode = O (O_SYSCALL_READ, SB);
  			}
  		    }
***************
*** 1267,1274 ****
  	  goto next;
  
! 	case O (O_SYSCALL, SB):
  	  {
  	    char c = cpu.regs[2];
  	    sim_callback->write_stdout (sim_callback, &c, 1);
  	  }
  	  goto next;
--- 1272,1292 ----
  	  goto next;
  
! 	case O (O_SYSCALL_WRITE, SB):
  	  {
  	    char c = cpu.regs[2];
  	    sim_callback->write_stdout (sim_callback, &c, 1);
+ 	  }
+ 	  goto next;
+ 
+ 	case O (O_SYSCALL_READ, SB):
+ 	  {
+ 	    if (h8300hmode)
+ 	    {
+ 	    	cpu.regs[0] = sim_callback->read (sim_callback, cpu.regs[1], (char *) (cpu.regs[2] + cpu.memory) , cpu.regs[3]);
+ 	    }
+ 	    else
+ 	    {
+ 	    	cpu.regs[0] = sim_callback->read (sim_callback, cpu.regs[1], (char *) ((unsigned short)cpu.regs[2] + cpu.memory) , cpu.regs[3]);
+ 	    }
  	  }
  	  goto next;

===================================================================
*** newlib/libc/sys/h8300hms/syscalls.c	Fri May 10 12:20:53 2002
--- newlib/libc/sys/h8300hms/syscalls.c.new	Tue May 14 10:49:33 2002
***************
*** 4,16 ****
  #include <sys/types.h>
  #include <sys/stat.h>
- #include <errno.h>
- 
- int _DEFUN(_read,(file, ptr, len),
- 	   int file _AND
- 	   char *ptr _AND
- 	   int len)
- {
-   return 0;
- }
  
  
--- 4,7 ----

===================================================================
*** newlib/libc/sys/h8300hms/read.c	Tue May 14 10:50:53 2002
--- newlib/libc/sys/h8300hms/read.c.new	Tue May 14 10:52:34 2002
***************
*** 0 ****
--- 1,25 ----
+ 
+ int _read(file, ptr, len)
+      int file;
+      char *ptr;
+      int len;
+ {
+ 	register int ret asm("r0") ;
+ 
+ 	// Type cast int as short so that we can copy values into 16 bit 
+ 	// registers in case of -mint32 switch is given.
+ 	// This is not going to affect data as file = 0 for stdin and len=1024 
+ 
+ 	asm("mov.w %0, r1" :: "r"((short)file) :"r1", "r2", "r3") ;
+ 	asm("mov.w %0, r3" :: "r"((short)len) :"r1", "r2", "r3") ;
+ #ifdef __H8300__
+ 	asm("mov.w %0, r2" :: "r"(ptr) :"r1", "r2", "r3") ;
+ #else
+ 	asm("mov.l %0, er2" :: "r"(ptr) :"r1", "er2", "r3") ;
+ #endif
+ 	// This is magic trap similar to _write for simulator
+ 	asm("jsr @@0xc8") ;
+   return ret;
+ }
+ 
+ 

===================================================================
*** newlib/libc/sys/h8300hms/Makefile.in	Fri May 10 12:20:53 2002
--- newlib/libc/sys/h8300hms/Makefile.in.new	Tue May 14 10:54:46 2002
***************
*** 85,89 ****
  noinst_LIBRARIES = lib.a
  
! lib_a_SOURCES = syscalls.c write.c _exit.c sbrk.c misc.c crt1.c
  
  ACLOCAL_AMFLAGS = -I ../../..
--- 85,89 ----
  noinst_LIBRARIES = lib.a
  
! lib_a_SOURCES = syscalls.c write.c read.c _exit.c sbrk.c misc.c crt1.c
  
  ACLOCAL_AMFLAGS = -I ../../..
***************
*** 99,103 ****
  LIBS = @LIBS@
  lib_a_LIBADD = 
! lib_a_OBJECTS =  syscalls.o write.o _exit.o sbrk.o misc.o crt1.o
  CFLAGS = @CFLAGS@
  COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--- 99,103 ----
  LIBS = @LIBS@
  lib_a_LIBADD = 
! lib_a_OBJECTS =  syscalls.o write.o read.o _exit.o sbrk.o misc.o crt1.o
  CFLAGS = @CFLAGS@
  COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
===================================================================

Regards,
Dhananjay
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Free download of GNUSH and GNUH8 tool chains for Hitachi's SH and H8 Series.
The following site also offers free support to European customers.
Read more at http://www.kpit.com/products/support.htm
Latest versions of GNUSH and GNUH8 are released on Apr 1, 2002.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 


             reply	other threads:[~2002-05-14  8:52 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-05-14  1:52 Dhananjay R. Deshpande [this message]
2002-05-17  5:47 Dhananjay R. Deshpande
2002-05-17 12:55 ` Thomas Fitzsimmons
2002-05-18  1:36 Andrew Volkov
2002-05-24  3:07 Dhananjay R. Deshpande
2002-06-03  3:07 Andrew Volkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=69595093233BB547BB70CF5E492B63F22C51E1@sohm.kpit.com \
    --to=dhananjayd@kpit.com \
    --cc=gdb-patches@sources.redhat.com \
    --cc=newlib@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox