This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Hi All,
Based on some suggestions from Andrew Cagney,
and others, made some changes to the patch.
GDB part is here:
http://sources.redhat.com/ml/gdb-patches/2003-03/msg00357.html
Newlib part is here:
http://sources.redhat.com/ml/newlib/2003/msg00178.html
A pseudo opcode needs to be added to h8300.h.
#define O_SYS_CMDLINE 120
The 120 value is purely arbitrary, just kept some
distance between previous last value, as we could,
theoretically add more File I/O operations there.
Could someone review and apply the patch. Or give
some comments.
Thanks and regards,
Venky
2003-03-17 D.Venkatasubramanian <dvenkat at noida dot hcltech dot com>
* h8300.h: Added a pseudo opcode for Commandline
processing.
>-----Original Message-----
>From: D.Venkatasubramanian, Noida
>Sent: Saturday, February 22, 2003 9:11 PM
>To: Kazu Hirata; Nick Clifton; 'gdb-patches at sources dot redhat dot com';
>'newlib at sources dot redhat dot com'; binutils at sources dot redhat dot com;
>gnuh8 at gnuh8 dot org dot uk
>Cc: D.Venkatasubramanian, Noida
>Subject: [PATCH] Commandline Support for the H8300 Simulator.
>
>
>Hi All,
>
>I am submitting a patch for adding support for
>the processing of commandline arguments on the
>H8300 Simulator.
>
>A brief description of each of the changes
>follows:
>
>(File : h8300_h_patch.txt)
>1) Added a pseudo opcode O_SYS_CMDLINE which
>will act as a trap identifier in h8300.h.
>
>(File : crt0_S_patch.txt)
>2) An extra instruction enclosed between a
>#ifdef __SIMULATOR_ARGV_SUPPORT__ / #endif
>directives, which simulates a trap instruction.
>This instruction is a jsr to 0xcc, one of the
>locations in the magic vector used by H8300.
>
>(File : configure_host_patch.txt)
>3) Added a macro -DSIMULATOR_ARGV_SUPPORT. The
>configure.host file ensures that this macro
>is activated when our target is a simulator.
>
>(File : inst_h_patch.txt)
>4) Added a new char ** variable which will
>hold the address of the Commandline arguments
>which the common files of the simulator would
>provide.
>
>(File : compile_c_patch.txt)
>This requires a lengthy explanation
>5) This macro sets a variable addr_cmdline to
>point to the location of the 8-bit high memory
>area as defined in the linker scripts. If the
>linker scripts change, then so would this
>require a change.
>
> #define SET_CMDLINE_LOCATION \
> if (h8300smode) \
> addr_cmdline = 0xffff00L; \
> else if (h8300hmode) \
> addr_cmdline = 0x2ff00L; \
> else \
> addr_cmdline = 0xff00L;
>
>6) 0xcc is a magic vector location used to
>simulate a trap instruction on H8300.
>Q : Why I chose 0xcc?
>A : A patch for File I/O implementation is
>pending approval, and those require 0xc5 - 0xcb,
>hence the 0xcc, once that patch is approved, the
>Oxc4 would be rendered useless and we could then
>use it instead of 0xcc. (Whether or not we want to
>change to 0xc4 then is a matter of trivial opinion.)
>
> switch (dst->src.literal)
> {
> case 0xc4:
> dst->opcode = O (O_SYSCALL, SB);
> break;
> case 0xcc:
> dst->opcode = O (O_SYS_CMDLINE, SB);
> break;
> }
> /* End of Processing for system calls. */
>
>7) Setting pointer to Commandline arguments
>provided by the common simulator support.
>
> /* Command Line support. */
> if (argv != NULL)
> {
> ptr_CommandLine = argv;
> }
>
>8) The code starting with this in sim_resume
>handles the actual simulation of the system call.
>
>case O (O_SYS_CMDLINE, SB):
>
>I have added a lot of comments to the code.
>
>Briefly, this saves the commandline arguments to
>the 8-bit memory area, and sets up an array which
>contains the addresses in the 8-bit area, where
>each argument starts. Once that is done, these
>have to be saved in simulator memory consecutively.
>As I need memory which is non volatile, I steal
>some memory from the stack and move the stack
>pointer such that I have enough memory to store all
>these addresses. As teh stack pointer holds the new
>value at the end, this memory is rendered non-volatile.
>
>At this point, I store the addresses in the array
>containing the address values for the commandline
>arguments to this memory.
>
>Nick Clifton had pointed out that at the beginning,
>there should be another value, a pointer to the
>beginning of argv. But the H8300 compiler seems not
>to require this. I set the no. of arguments to
>Register 0, address of the first of the address on
>the non-volatile memory to Register 1, and set the
>new stack pointer to the top of this non-volatile
>memory. (Slightly controversial stuff, that extra
>pointer to argv that Nick had specified, but adding
>that seems to break the support, the last argument
>gets left out.)
>
>Tested on H8300-hms and H8300-elf and does not seem
>to break anything. Also I am able to print the
>commandline arguments correctly.
>
>I used a simple test case :
>int main(int argc, char *argv[])
>{
> int i;
> int j = 0;
>
> printf ("Argc = %d\n", argc);
>
> for (i = 0; i < argc; i++)
> printf ("%s\n", argv[i]);
> return 0;
>}
>
>Could someone review this patch and point out any issues.
>Thought, this would be very useful feature combined with
>the File I/O feature for which I have already submitted
>a patch.
>
>I think I will end this long description here.
>
>Thank You Nick Clifton and Kazu Hirata and all those that
>were helpful in the explanation of ABI and other issues.
>
>Thanks and Regards,
>
>Venky
>
>PS : There are two files complete_patch.txt and
>complete_ChangeLog.txt which contain all the patches
>and ChangeLogs in single files respectively.
>
>Changelog Entries
>
>In include/opcode (File : binutils_ChangeLog.txt)
>
>
>2003-02-22 D.Venkatasubramanian <dvenkat at noida dot hcltech dot com>
>
> * h8300.h: Added a pseudo opcodes for Commandline
> processing.
>
>In newlib/ (File : newlib_ChangeLog.txt)
>
>2003-02-22 D.Venkatasubramanian <dvenkat at noida dot hcltech dot com>
>
> * libc/include/sys/h8300hms/crt0.S: Added an extra
> instruction enclosed by SIMULATOR_ARGV_SUPPORT macro
> for Commandline support when target is simulator.
> * configure.host: Added -DSIMULATOR_ARGV_SUPPORT for
> Commandline Support.
>
>In sim/h8300/ (File : sim_ChangeLog.txt)
>
>2003-02-22 D.Venkatasubramanian <dvenkat at noida dot hcltech dot com>
>
> * compile.c: Added #define SET_CMDLINE_LOCATION to
> set the location of 8-bit (256 locations) where the
> Command Line arguments would be stored.
> (decode): Added a TRAP to 0xcc for Commandline
> processing using pseudo opcode O_SYS_CMDLINE.
> (sim_resume): Added handling of O_SYS_CMDLINE Trap.
> (sim_create_inferior): Setting a pointer to
> Commandline Args array.
> * inst.h: Added a new variable ptr_CommandLine for
> storing pointer to Commandline array.
>
Attachment:
h8300_h_patch.txt
Description: Text document
Attachment:
binutils_ChangeLog.txt
Description: Text document
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |