diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2006-12-11 19:58:01 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2006-12-11 19:58:01 +0000 |
commit | 12cb181da7dffe5baba2c6ff78f7d35191273b07 (patch) | |
tree | bdd0960621c8f9c401b2d6702fa4e110c6413239 /libgloss/m68k/io.h | |
parent | 7dfad3a0c6530aa075458e0d81e5039eca70abd8 (diff) | |
download | cygnal-12cb181da7dffe5baba2c6ff78f7d35191273b07.tar.gz cygnal-12cb181da7dffe5baba2c6ff78f7d35191273b07.tar.bz2 cygnal-12cb181da7dffe5baba2c6ff78f7d35191273b07.zip |
2006-12-11 Kazu Hirata <kazu@codesourcery.com>
Merge from newlib-csl-20060320-branch:
2006-12-01 Nathan Sidwell <nathan@codesourcery.com>
Kazu Hirata <kazu@codesourcery.com>
* m68k/Makefile.in (CF_ISRS): Use addprefix.
2006-11-01 Nathan Sidwell <nathan@codesourcery.com>
* m68k/Makefile.in (CFLAGS): Do not clear. Add to all compilations.
(ARFLAGS): Remove commented out definition.
* m68k/configure.in (DO) Set to list of target cpu families.
* m68k/configure: Rebuilt.
* m68k/Makefile.in (DO): New.
(UNHOSTED_BSP, UNHOSTED_OBJS, HOSTED_BSP, HOSTED_OBJS): Move
later.
(m5208evb, m5213evb, m52235evb, m5235evb, m5273c3, m5275evb,
m5282evb, m5329evb, m5485evb): Move earlier.
(all): Add all_$DO dependencies.
(all_cf, all_m68k): New targets, depend on cf & m68k bsps as
appropriate.
(m%-ram.ld, m%-rom.ld, m%-ram-hosted.ld, m%-rom-hosted.ld): Add
'm' prefix.
(install): Add install_$DO dependencies.
(install_cf, install_m68k): New targets. Perform cf and m68k
installs as appropriate.
(install_io): New, install the io libraries.
2006-10-23 Nathan Sidwell <nathan@codesourcery.com>
* m68k/Makefile.in (CF_CRT0): Rename to CF_CRT0S, separate hosted
& unhosted versions.
(CF_OBJS): Add cf-isv.o.
(CF_SOURCES): Add cf-isv.S.
(cf-hosted-crt0.o, cf-unhosted-crt0.o): New targets.
* m68k/cf-isv.S: New, broken out of ...
* m68k/cf-crt0.S: ... here. Add HOSTED & UNHOSTED differences.
* m68k/cf-crt1.c (__start1): Add heap_limit argument.
(__heap_limit): Define.
* m68k/cf-sbrk.c (__heap_limit): Declare.
(sbrk): Adjust for __heap_limit.
* m68k/cf.sc: Use different crt0's for hosted & unhosted.
Install a separate isv.o file.
* m68k/io.h (HOSTED_PUTCHAR): Replace with ...
(HOSTED_INIT_SIM): ... this.
2006-10-20 Nathan Sidwell <nathan@codesourcery.com>
* m68k/Makefile.in (CF_BOARDS): Add m5275evb.
(m5275evb): New board.
2006-10-20 Vladimir Prus <vladimir@codesourcery.com>
* m68k/cf.sc: Add linkonce sections and
DWARF sections.
2006-10-07 Nathan Sidwell <nathan@codesourcery.com>
* m68k/Makefile.in: Adjust Coldfire rules.
(BDM_CRT0, BDM_BSP, BDM_OBJS, BDM_ISRS): Rename to ...
(CF_CRT0, CF_BSP, CF_OBJS, CF_ISRS): ... here. Adjust.
(BDM_OTHER_OBJS): Remove.
(BDM_SYSOBJS): Rename to ...
(UNHOSTED_OBJS): ... here. Adjust.
(UNHOSTED_BSP, HOSTED_OBJS, HOSTED_BSP): New.
(CF_HOSTED_SCRIPTS): New.
(CF_SCRIPTS, CF_SOURCES): Adjust.
* m68k/cf.sc: Add IO library variable.
* m68k/bdm-crt0.S, m68k/bdm-crt1.c, m68k/bdm-isrs.c,
m68k/bdm-sbrk.c, m68k/bdm-semihost.S: Rename to ...
* m68k/cf-crt0.S, m68k/cf-crt1.c, m68k/cf-isrs.c, m68k/cf-sbrk.c,
m68k/cf-hosted.S: ... here.
* m68k/cf-exit.c: New.
* m68k/bdm-gdb.h, m68k/bdm-semihost.h: Merge into ...
* m68k/io.h: ... here. Add unhosted support. Adjust conversion
function names.
* m68k/bdm-gdb.c: Rename to ...
* m68k/io-gdb.c: ... here. Adjust names of conversion functions.
* m68k/bdm-close.c, m68k/bdm-exit.c, m68k/bdm-fstat.c,
m68k/bdm-gettimeofday.c, m68k/bdm-isatty.c, m68k/bdm-lseek.c,
m68k/bdm-open.c, m68k/bdm-read.c, m68k/bdm-rename.c,
m68k/bdm-stat.c, m68k/bdm-system.c, m68k/bdm-time.c,
m68k/bdm-unlink.c, m68k/bdm-write.c: Rename to ...
* m68k/io-close.c, m68k/io-exit.c, m68k/io-fstat.c,
m68k/io-gettimeofday.c, m68k/io-isatty.c, m68k/io-lseek.c,
m68k/io-open.c, m68k/io-read.c, m68k/io-rename.c, m68k/io-stat.c,
m68k/io-system.c, m68k/io-time.c, m68k/io-unlink.c,
m68k/io-write.c: ... here. Include io.h. Adjust for hosted &
unhosted libraries. Adjust names of gdb conversion functions.
2006-09-29 Nathan Sidwell <nathan@codesourcery.com>
* m68k/bdm-semihost.S: Add more comments. Make instruction weirder.
2006-09-22 Nathan Sidwell <nathan@codesourcery.com>
* m68k/bdm-crt1.c (hardware_init_hook): Use #defines for CACR bits.
2006-09-18 Nathan Sidwell <nathan@codesourcery.com>
* m68k/Makefile.in: Don't force a frame pointer on the ISRs.
* m68k/bdm-crt1.c (__start1): Don't set the VBR here.
(hardeare_init_hook): Define weakly. Set VBR here, enable caching
if supported.
* m68k/Makefile.in (bdm-semihost.o): Build from bdm-semihost.S.
* m68k/bdm-semihost.c: Remove.
* m68k/bdm-semihost.S: New.
* m68k/bdm-crt0.S: Don't install semihosting trap handler.
* m68k/bdm-close.c, bdm-exit.c, bdm-fstat.c, bdm-gettimeofday.c,
bdm-isatty.c, bdm-lseek.c, bdm-open.c, bdm-read.c, bdm-rename.c,
bdm-stat.c, bdm-system.c, bdm-unlink.c, bdm-write.c): Update.
* m68k/bdm-isrs.c: Update comment.
* m68k/bdm-semihost.h (BDM_TRAPNUM, BDM_FUNC_REG, BDM_ARG_REG,
BDM_TRAP): Remove.
(__bdm_semihost): Declare.
2006-09-15 Nathan Sidwell <nathan@codesourcery.com>
* m68k/Makefile.in (BDM_OTHER_OBJS): Remove sbrk.o.
(BDM_SYSOBJS): Add bdm-sbrk.o.
* m68k/bdm-sbrk.c: New.
2006-09-06 Nathan Sidwell <nathan@codesourcery.com>
* m68k/Makefile.in (CF_SOURCES): New.
(install): Install them.
2006-09-01 Nathan Sidwell <nathan@codesourcery.com>
* m68k/cf.sc: Add .jcr section to .text.
Diffstat (limited to 'libgloss/m68k/io.h')
-rw-r--r-- | libgloss/m68k/io.h | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/libgloss/m68k/io.h b/libgloss/m68k/io.h new file mode 100644 index 000000000..b6b228739 --- /dev/null +++ b/libgloss/m68k/io.h @@ -0,0 +1,155 @@ +/* + * hosted & unhosted io support. + * + * Copyright (c) 2006 CodeSourcery Inc + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +#if HOSTED +#include <stdint.h> +#include <sys/types.h> +#include <sys/time.h> +#include <sys/stat.h> + +#define HOSTED_EXIT 0 +#define HOSTED_INIT_SIM 1 +#define HOSTED_OPEN 2 +#define HOSTED_CLOSE 3 +#define HOSTED_READ 4 +#define HOSTED_WRITE 5 +#define HOSTED_LSEEK 6 +#define HOSTED_RENAME 7 +#define HOSTED_UNLINK 8 +#define HOSTED_STAT 9 +#define HOSTED_FSTAT 10 +#define HOSTED_GETTIMEOFDAY 11 +#define HOSTED_ISATTY 12 +#define HOSTED_SYSTEM 13 + +/* This function is provided by the board's BSP, because the precise + mechanism of informing gdb is board specific. */ +extern int __io_hosted (int func, void *args); + +/* Protocol specific representation of datatypes, as specified in D.9.11 + * of the GDB manual. + * Note that since the m68k is big-endian, we can use native + * representations of integer datatypes in structured datatypes. */ + +typedef uint32_t gdb_mode_t; +typedef uint32_t gdb_time_t; + +struct gdb_stat { + uint32_t st_dev; /* device */ + uint32_t st_ino; /* inode */ + gdb_mode_t st_mode; /* protection */ + uint32_t st_nlink; /* number of hard links */ + uint32_t st_uid; /* user ID of owner */ + uint32_t st_gid; /* group ID of owner */ + uint32_t st_rdev; /* device type (if inode device) */ + uint64_t st_size; /* total size, in bytes */ + uint64_t st_blksize; /* blocksize for filesystem I/O */ + uint64_t st_blocks; /* number of blocks allocated */ + gdb_time_t st_atime; /* time of last access */ + gdb_time_t st_mtime; /* time of last modification */ + gdb_time_t st_ctime; /* time of last change */ +}; + +struct gdb_timeval { + gdb_time_t tv_sec; /* second */ + uint64_t tv_usec; /* microsecond */ +}; + + +/* Parameters are passed between the library and the debugging stub + * in a fixed-size buffer. + */ + +typedef uint32_t gdb_parambuf_t[4]; + +/* open flags */ + +#define GDB_O_RDONLY 0x0 +#define GDB_O_WRONLY 0x1 +#define GDB_O_RDWR 0x2 +#define GDB_O_APPEND 0x8 +#define GDB_O_CREAT 0x200 +#define GDB_O_TRUNC 0x400 +#define GDB_O_EXCL 0x800 + +/* mode_t values */ + +#define GDB_S_IFREG 0100000 +#define GDB_S_IFDIR 040000 +#define GDB_S_IRUSR 0400 +#define GDB_S_IWUSR 0200 +#define GDB_S_IXUSR 0100 +#define GDB_S_IRGRP 040 +#define GDB_S_IWGRP 020 +#define GDB_S_IXGRP 010 +#define GDB_S_IROTH 04 +#define GDB_S_IWOTH 02 +#define GDB_S_IXOTH 01 + +/* errno values */ + +#define GDB_EPERM 1 +#define GDB_ENOENT 2 +#define GDB_EINTR 4 +#define GDB_EBADF 9 +#define GDB_EACCES 13 +#define GDB_EFAULT 14 +#define GDB_EBUSY 16 +#define GDB_EEXIST 17 +#define GDB_ENODEV 19 +#define GDB_ENOTDIR 20 +#define GDB_EISDIR 21 +#define GDB_EINVAL 22 +#define GDB_ENFILE 23 +#define GDB_EMFILE 24 +#define GDB_EFBIG 27 +#define GDB_ENOSPC 28 +#define GDB_ESPIPE 29 +#define GDB_EROFS 30 +#define GDB_ENAMETOOLONG 91 +#define GDB_EUNKNOWN 9999 + +/* lseek flags */ + +#define GDB_SEEK_SET 0 +#define GDB_SEEK_CUR 1 +#define GDB_SEEK_END 2 + + +/* conversion functions */ + +extern gdb_mode_t __hosted_to_gdb_mode_t (mode_t m); +extern int32_t __hosted_to_gdb_open_flags (int f); +extern int32_t __hosted_to_gdb_lseek_flags (int f); + +extern void __hosted_from_gdb_stat (const struct gdb_stat *gs, + struct stat *s); +extern void __hosted_from_gdb_timeval (const struct gdb_timeval *gt, + struct timeval *t); +extern int __hosted_from_gdb_errno (int32_t err); + +#else +#ifdef IO +#define IO_NAME_(IO) __hosted_##IO +#define IO_NAME(IO) IO_NAME_(IO) +#define IO_STRING_(IO) #IO +#define IO_STRING(IO) IO_STRING_(IO) +/* Emit an object that causes a gnu linker warning. */ +static const char IO_NAME (IO) [] +__attribute__ ((section (".gnu.warning"), used)) = +"IO function '" IO_STRING (IO) "' used"; +#endif +#endif |