source: rtems/contrib/crossrpms/patches/gdb-6.8-rtems4.10-20080912.diff @ facca98

4.104.115
Last change on this file since facca98 was ebe7bf28, checked in by Ralf Corsepius <ralf.corsepius@…>, on 09/12/08 at 06:44:19

Merge-in Joels gdb-6.8-sysv-ipc-1.diff.

  • Property mode set to 100644
File size: 39.1 KB
  • sim/common/aclocal.m4

    diff -Naur gdb-6.8.orig/sim/common/aclocal.m4 gdb-6.8/sim/common/aclocal.m4
    old new  
    1818#
    1919# SIM_AC_OUTPUT
    2020
    21 AC_DEFUN(SIM_AC_COMMON,
     21AC_DEFUN([SIM_AC_COMMON],
    2222[
    2323# autoconf.info says this should be called right after AC_INIT.
    2424AC_CONFIG_HEADER(ifelse([$1],,config.h,[$1]):config.in)
     
    245245dnl supported.
    246246dnl ??? Until there is demonstrable value in doing something more complicated,
    247247dnl let's not.
    248 AC_DEFUN(SIM_AC_OPTION_ENVIRONMENT,
     248AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT],
    249249[
    250250AC_ARG_ENABLE(sim-environment,
    251251[  --enable-sim-environment=environment Specify mixed, user, virtual or operating environment.],
     
    269269dnl Without this option all possible alignment restrictions are accommodated.
    270270dnl arg[1] is hardwired target alignment
    271271dnl arg[2] is default target alignment
    272 AC_DEFUN(SIM_AC_OPTION_ALIGNMENT,
     272AC_DEFUN([SIM_AC_OPTION_ALIGNMENT],
    273273wire_alignment="[$1]"
    274274default_alignment="[$2]"
    275275[
     
    318318
    319319
    320320dnl Conditionally compile in assertion statements.
    321 AC_DEFUN(SIM_AC_OPTION_ASSERT,
     321AC_DEFUN([SIM_AC_OPTION_ASSERT],
    322322[
    323323AC_ARG_ENABLE(sim-assert,
    324324[  --enable-sim-assert                  Specify whether to perform random assertions.],
     
    342342dnl arg[3] is the number of bits in an address
    343343dnl arg[4] is the number of bits in an OpenFirmware cell.
    344344dnl FIXME: this information should be obtained from bfd/archure
    345 AC_DEFUN(SIM_AC_OPTION_BITSIZE,
     345AC_DEFUN([SIM_AC_OPTION_BITSIZE],
    346346wire_word_bitsize="[$1]"
    347347wire_word_msb="[$2]"
    348348wire_address_bitsize="[$3]"
     
    408408dnl that support both big and little endian targets.
    409409dnl arg[1] is hardwired target endianness.
    410410dnl arg[2] is default target endianness.
    411 AC_DEFUN(SIM_AC_OPTION_ENDIAN,
     411AC_DEFUN([SIM_AC_OPTION_ENDIAN],
    412412[
    413413wire_endian="[$1]"
    414414default_endian="[$2]"
     
    458458dnl --enable-sim-hostendian is for users of the simulator when
    459459dnl they find that AC_C_BIGENDIAN does not function correctly
    460460dnl (for instance in a canadian cross)
    461 AC_DEFUN(SIM_AC_OPTION_HOSTENDIAN,
     461AC_DEFUN([SIM_AC_OPTION_HOSTENDIAN],
    462462[
    463463AC_ARG_ENABLE(sim-hostendian,
    464464[  --enable-sim-hostendian=end          Specify host byte endian orientation.],
     
    490490dnl And optionally the bitsize of the floating point register.
    491491dnl arg[1] specifies the presence (or absence) of floating point hardware
    492492dnl arg[2] specifies the number of bits in a floating point register
    493 AC_DEFUN(SIM_AC_OPTION_FLOAT,
     493AC_DEFUN([SIM_AC_OPTION_FLOAT],
    494494[
    495495default_sim_float="[$1]"
    496496default_sim_float_bitsize="[$2]"
     
    519519
    520520
    521521dnl The argument is the default cache size if none is specified.
    522 AC_DEFUN(SIM_AC_OPTION_SCACHE,
     522AC_DEFUN([SIM_AC_OPTION_SCACHE],
    523523[
    524524default_sim_scache="ifelse([$1],,0,[$1])"
    525525AC_ARG_ENABLE(sim-scache,
     
    539539
    540540
    541541dnl The argument is the default model if none is specified.
    542 AC_DEFUN(SIM_AC_OPTION_DEFAULT_MODEL,
     542AC_DEFUN([SIM_AC_OPTION_DEFAULT_MODEL],
    543543[
    544544default_sim_default_model="ifelse([$1],,0,[$1])"
    545545AC_ARG_ENABLE(sim-default-model,
     
    559559dnl arg[1] Enable sim-hw by default? ("yes" or "no")
    560560dnl arg[2] is a space separated list of devices that override the defaults
    561561dnl arg[3] is a space separated list of extra target specific devices.
    562 AC_DEFUN(SIM_AC_OPTION_HARDWARE,
     562AC_DEFUN([SIM_AC_OPTION_HARDWARE],
    563563[
    564564if test x"[$1]" = x"yes"; then
    565565  sim_hw_p=yes
     
    621621dnl performance by inlining functions.
    622622dnl Guarantee that unconfigured simulators do not do any inlining
    623623sim_inline="-DDEFAULT_INLINE=0"
    624 AC_DEFUN(SIM_AC_OPTION_INLINE,
     624AC_DEFUN([SIM_AC_OPTION_INLINE],
    625625[
    626626default_sim_inline="ifelse([$1],,,-DDEFAULT_INLINE=[$1])"
    627627AC_ARG_ENABLE(sim-inline,
     
    666666AC_SUBST(sim_inline)
    667667
    668668
    669 AC_DEFUN(SIM_AC_OPTION_PACKAGES,
     669AC_DEFUN([SIM_AC_OPTION_PACKAGES],
    670670[
    671671AC_ARG_ENABLE(sim-packages,
    672672[  --enable-sim-packages=list           Specify the packages to be included in the build.],
     
    692692AC_SUBST(sim_packages)
    693693
    694694
    695 AC_DEFUN(SIM_AC_OPTION_REGPARM,
     695AC_DEFUN([SIM_AC_OPTION_REGPARM],
    696696[
    697697AC_ARG_ENABLE(sim-regparm,
    698698[  --enable-sim-regparm=nr-parm         Pass parameters in registers instead of on the stack - x86/GCC specific.],
     
    709709AC_SUBST(sim_regparm)
    710710
    711711
    712 AC_DEFUN(SIM_AC_OPTION_RESERVED_BITS,
     712AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
    713713[
    714714default_sim_reserved_bits="ifelse([$1],,1,[$1])"
    715715AC_ARG_ENABLE(sim-reserved-bits,
     
    726726AC_SUBST(sim_reserved_bits)
    727727
    728728
    729 AC_DEFUN(SIM_AC_OPTION_SMP,
     729AC_DEFUN([SIM_AC_OPTION_SMP],
    730730[
    731731default_sim_smp="ifelse([$1],,5,[$1])"
    732732AC_ARG_ENABLE(sim-smp,
     
    746746AC_SUBST(sim_smp)
    747747
    748748
    749 AC_DEFUN(SIM_AC_OPTION_STDCALL,
     749AC_DEFUN([SIM_AC_OPTION_STDCALL],
    750750[
    751751AC_ARG_ENABLE(sim-stdcall,
    752752[  --enable-sim-stdcall=type            Use an alternative function call/return mechanism - x86/GCC specific.],
     
    763763AC_SUBST(sim_stdcall)
    764764
    765765
    766 AC_DEFUN(SIM_AC_OPTION_XOR_ENDIAN,
     766AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
    767767[
    768768default_sim_xor_endian="ifelse([$1],,8,[$1])"
    769769AC_ARG_ENABLE(sim-xor-endian,
     
    782782
    783783dnl --enable-build-warnings is for developers of the simulator.
    784784dnl it enables extra GCC specific warnings.
    785 AC_DEFUN(SIM_AC_OPTION_WARNINGS,
     785AC_DEFUN([SIM_AC_OPTION_WARNINGS],
    786786[
    787787# NOTE: Don't add -Wall or -Wunused, they both include
    788788# -Wunused-parameter which reports bogus warnings.
     
    866866dnl one afterwards.  The two pieces of the common fragment are inserted into
    867867dnl the target's fragment at the appropriate points.
    868868
    869 AC_DEFUN(SIM_AC_OUTPUT,
     869AC_DEFUN([SIM_AC_OUTPUT],
    870870[
    871871AC_LINK_FILES($sim_link_files, $sim_link_links)
    872872dnl Make @cgen_breaks@ non-null only if the sim uses CGEN.
     
    895895sinclude(../../config/gettext-sister.m4)
    896896
    897897dnl --enable-cgen-maint support
    898 AC_DEFUN(SIM_AC_OPTION_CGEN_MAINT,
     898AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT],
    899899[
    900900cgen_maint=no
    901901dnl Default is to use one in build tree.
  • sim/erc32/configure

    diff -Naur gdb-6.8.orig/sim/erc32/configure gdb-6.8/sim/erc32/configure
    old new  
    309309# include <unistd.h>
    310310#endif"
    311311
    312 ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS sim_environment sim_alignment sim_assert sim_bitsize sim_endian sim_hostendian sim_float sim_scache sim_default_model sim_hw_cflags sim_hw_objs sim_hw sim_inline sim_packages sim_regparm sim_reserved_bits sim_smp sim_stdcall sim_xor_endian WARN_CFLAGS WERROR_CFLAGS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CC_FOR_BUILD HDEFINES AR RANLIB ac_ct_RANLIB USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CPP EGREP MAINT sim_bswap sim_cflags sim_debug sim_stdio sim_trace sim_profile TERMCAP READLINE cgen_breaks LIBOBJS LTLIBOBJS'
     312ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS sim_environment sim_alignment sim_assert sim_bitsize sim_endian sim_hostendian sim_float sim_scache sim_default_model sim_hw_cflags sim_hw_objs sim_hw sim_inline sim_packages sim_regparm sim_reserved_bits sim_smp sim_stdcall sim_xor_endian WARN_CFLAGS WERROR_CFLAGS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CC_FOR_BUILD HDEFINES AR RANLIB ac_ct_RANLIB USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CPP EGREP MAINT sim_bswap sim_cflags sim_debug sim_stdio sim_trace sim_profile READLINE READLINE_DEPS READLINE_CFLAGS cgen_breaks LIBOBJS LTLIBOBJS'
    313313ac_subst_files=''
    314314
    315315# Initialize some variables set by options.
     
    858858  --enable-sim-trace=opts               Enable tracing flags
    859859  --enable-sim-profile=opts             Enable profiling flags
    860860
     861Optional Packages:
     862  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
     863  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
     864  --with-system-readline  use installed readline library
     865
    861866Some influential environment variables:
    862867  CC          C compiler command
    863868  CFLAGS      C compiler flags
     
    44934498done
    44944499
    44954500
    4496 # In the Cygwin environment, we need some additional flags.
    4497 echo "$as_me:$LINENO: checking for cygwin" >&5
    4498 echo $ECHO_N "checking for cygwin... $ECHO_C" >&6
    4499 if test "${sim_cv_os_cygwin+set}" = set; then
    4500   echo $ECHO_N "(cached) $ECHO_C" >&6
    4501 else
    4502   cat >conftest.$ac_ext <<_ACEOF
    4503 /* confdefs.h.  */
    4504 _ACEOF
    4505 cat confdefs.h >>conftest.$ac_ext
    4506 cat >>conftest.$ac_ext <<_ACEOF
    4507 /* end confdefs.h.  */
    45084501
    4509 #ifdef __CYGWIN__
    4510 lose
    4511 #endif
    4512 _ACEOF
    4513 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
    4514   $EGREP "lose" >/dev/null 2>&1; then
    4515   sim_cv_os_cygwin=yes
    4516 else
    4517   sim_cv_os_cygwin=no
    4518 fi
    4519 rm -f conftest*
     4502# Check whether --with-system-readline or --without-system-readline was given.
     4503if test "${with_system_readline+set}" = set; then
     4504  withval="$with_system_readline"
    45204505
    4521 fi
    4522 echo "$as_me:$LINENO: result: $sim_cv_os_cygwin" >&5
    4523 echo "${ECHO_T}$sim_cv_os_cygwin" >&6
     4506fi;
    45244507
    4525 if test x$sim_cv_os_cygwin = xyes; then
    4526   TERMCAP='`if test -r ../../libtermcap/libtermcap.a; then echo ../../libtermcap/libtermcap.a; else echo -ltermcap; fi` -luser32'
    4527 else
    4528   echo "$as_me:$LINENO: checking for main in -ltermcap" >&5
    4529 echo $ECHO_N "checking for main in -ltermcap... $ECHO_C" >&6
    4530 if test "${ac_cv_lib_termcap_main+set}" = set; then
    4531   echo $ECHO_N "(cached) $ECHO_C" >&6
    4532 else
    4533   ac_check_lib_save_LIBS=$LIBS
    4534 LIBS="-ltermcap  $LIBS"
    4535 cat >conftest.$ac_ext <<_ACEOF
     4508if test "$with_system_readline" = yes; then
     4509  echo "$as_me:$LINENO: checking for readline" >&5
     4510echo $ECHO_N "checking for readline... $ECHO_C" >&6
     4511  save_LIBS="$LIBS"
     4512  LIBS="-lreadline $save_LIBS"
     4513  cat >conftest.$ac_ext <<_ACEOF
    45364514/* confdefs.h.  */
    45374515_ACEOF
    45384516cat confdefs.h >>conftest.$ac_ext
    45394517cat >>conftest.$ac_ext <<_ACEOF
    45404518/* end confdefs.h.  */
    45414519
    4542 
     4520/* Override any gcc2 internal prototype to avoid an error.  */
     4521#ifdef __cplusplus
     4522extern "C"
     4523#endif
     4524/* We use char because int might match the return type of a gcc2
     4525   builtin and then its argument prototype would still apply.  */
     4526char add_history ();
    45434527int
    45444528main ()
    45454529{
    4546 main ();
     4530add_history ();
    45474531  ;
    45484532  return 0;
    45494533}
     
    45704554  ac_status=$?
    45714555  echo "$as_me:$LINENO: \$? = $ac_status" >&5
    45724556  (exit $ac_status); }; }; then
    4573   ac_cv_lib_termcap_main=yes
     4557  READLINE=-lreadline
    45744558else
    45754559  echo "$as_me: failed program was:" >&5
    45764560sed 's/^/| /' conftest.$ac_ext >&5
    45774561
    4578 ac_cv_lib_termcap_main=no
    4579 fi
    4580 rm -f conftest.err conftest.$ac_objext \
    4581       conftest$ac_exeext conftest.$ac_ext
    4582 LIBS=$ac_check_lib_save_LIBS
    4583 fi
    4584 echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_main" >&5
    4585 echo "${ECHO_T}$ac_cv_lib_termcap_main" >&6
    4586 if test $ac_cv_lib_termcap_main = yes; then
    4587   TERMCAP=-ltermcap
    4588 else
    4589   TERMCAP=""
    4590 fi
    4591 
    4592 fi
    4593 
    4594 
    4595 # We prefer the in-tree readline.  Top-level dependencies make sure
    4596 # src/readline (if it's there) is configured before src/sim.
    4597 if test -r ../../readline/Makefile; then
    4598   READLINE=../../readline/libreadline.a
    4599 else
    4600   echo "$as_me:$LINENO: checking for readline in -lreadline" >&5
    4601 echo $ECHO_N "checking for readline in -lreadline... $ECHO_C" >&6
    4602 if test "${ac_cv_lib_readline_readline+set}" = set; then
    4603   echo $ECHO_N "(cached) $ECHO_C" >&6
    4604 else
    4605   ac_check_lib_save_LIBS=$LIBS
    4606 LIBS="-lreadline $TERMCAP $LIBS"
    4607 cat >conftest.$ac_ext <<_ACEOF
     4562 LIBS="-lreadline -lncurses $save_LIBS"
     4563      cat >conftest.$ac_ext <<_ACEOF
    46084564/* confdefs.h.  */
    46094565_ACEOF
    46104566cat confdefs.h >>conftest.$ac_ext
     
    46174573#endif
    46184574/* We use char because int might match the return type of a gcc2
    46194575   builtin and then its argument prototype would still apply.  */
    4620 char readline ();
     4576char add_history ();
    46214577int
    46224578main ()
    46234579{
    4624 readline ();
     4580add_history ();
    46254581  ;
    46264582  return 0;
    46274583}
     
    46484604  ac_status=$?
    46494605  echo "$as_me:$LINENO: \$? = $ac_status" >&5
    46504606  (exit $ac_status); }; }; then
    4651   ac_cv_lib_readline_readline=yes
     4607  READLINE="-lreadline -lncurses"
    46524608else
    46534609  echo "$as_me: failed program was:" >&5
    46544610sed 's/^/| /' conftest.$ac_ext >&5
    46554611
    4656 ac_cv_lib_readline_readline=no
     4612{ { echo "$as_me:$LINENO: error: unable to detect readline" >&5
     4613echo "$as_me: error: unable to detect readline" >&2;}
     4614   { (exit 1); exit 1; }; }
    46574615fi
    46584616rm -f conftest.err conftest.$ac_objext \
    46594617      conftest$ac_exeext conftest.$ac_ext
    4660 LIBS=$ac_check_lib_save_LIBS
     4618
    46614619fi
    4662 echo "$as_me:$LINENO: result: $ac_cv_lib_readline_readline" >&5
    4663 echo "${ECHO_T}$ac_cv_lib_readline_readline" >&6
    4664 if test $ac_cv_lib_readline_readline = yes; then
    4665   READLINE=-lreadline
    4666 else
    4667   { { echo "$as_me:$LINENO: error: the required \"readline\" library is missing" >&5
    4668 echo "$as_me: error: the required \"readline\" library is missing" >&2;}
    4669    { (exit 1); exit 1; }; }
     4620rm -f conftest.err conftest.$ac_objext \
     4621      conftest$ac_exeext conftest.$ac_ext
     4622  LIBS="$save_LIBS"
     4623  echo "$as_me:$LINENO: result: $READLINE" >&5
     4624echo "${ECHO_T}$READLINE" >&6
     4625  READLINE_DEPS=
     4626  READLINE_CFLAGS=
     4627else
     4628  READLINE='$(READLINE_DIR)/libreadline.a'
     4629  READLINE_DEPS='$(READLINE)'
     4630  READLINE_CFLAGS='-I$(READLINE_SRC)/..'
    46704631fi
    46714632
    4672 fi
     4633
     4634
    46734635
    46744636
    46754637ac_sources="$sim_link_files"
     
    53895351s,@sim_stdio@,$sim_stdio,;t t
    53905352s,@sim_trace@,$sim_trace,;t t
    53915353s,@sim_profile@,$sim_profile,;t t
    5392 s,@TERMCAP@,$TERMCAP,;t t
    53935354s,@READLINE@,$READLINE,;t t
     5355s,@READLINE_DEPS@,$READLINE_DEPS,;t t
     5356s,@READLINE_CFLAGS@,$READLINE_CFLAGS,;t t
    53945357s,@cgen_breaks@,$cgen_breaks,;t t
    53955358s,@LIBOBJS@,$LIBOBJS,;t t
    53965359s,@LTLIBOBJS@,$LTLIBOBJS,;t t
  • sim/erc32/configure.ac

    diff -Naur gdb-6.8.orig/sim/erc32/configure.ac gdb-6.8/sim/erc32/configure.ac
    old new  
    1111
    1212AC_CHECK_HEADERS(stdlib.h)
    1313
    14 # In the Cygwin environment, we need some additional flags.
    15 AC_CACHE_CHECK([for cygwin], sim_cv_os_cygwin,
    16 [AC_EGREP_CPP(lose, [
    17 #ifdef __CYGWIN__
    18 lose
    19 #endif],[sim_cv_os_cygwin=yes],[sim_cv_os_cygwin=no])])
     14AC_ARG_WITH([system-readline],
     15  [AS_HELP_STRING([--with-system-readline],
     16                  [use installed readline library])])
    2017
    21 if test x$sim_cv_os_cygwin = xyes; then
    22   TERMCAP='`if test -r ../../libtermcap/libtermcap.a; then echo ../../libtermcap/libtermcap.a; else echo -ltermcap; fi` -luser32'
     18if test "$with_system_readline" = yes; then
     19  AC_MSG_CHECKING([for readline])
     20  save_LIBS="$LIBS"
     21  LIBS="-lreadline $save_LIBS"
     22  AC_LINK_IFELSE([AC_LANG_CALL([],
     23    [add_history])], [READLINE=-lreadline],
     24    [ LIBS="-lreadline -lncurses $save_LIBS"
     25      AC_LINK_IFELSE([AC_LANG_CALL([],
     26        [add_history])], [READLINE="-lreadline -lncurses"],
     27        [AC_MSG_ERROR([unable to detect readline])])
     28    ])
     29  LIBS="$save_LIBS"
     30  AC_MSG_RESULT($READLINE)
     31  READLINE_DEPS=
     32  READLINE_CFLAGS=
    2333else
    24   AC_CHECK_LIB(termcap, main, TERMCAP=-ltermcap, TERMCAP="")
    25 fi
    26 AC_SUBST(TERMCAP)
    27 
    28 # We prefer the in-tree readline.  Top-level dependencies make sure
    29 # src/readline (if it's there) is configured before src/sim.
    30 if test -r ../../readline/Makefile; then
    31   READLINE=../../readline/libreadline.a
    32 else
    33   AC_CHECK_LIB(readline, readline, READLINE=-lreadline,
    34                AC_ERROR([the required "readline" library is missing]), $TERMCAP)
     34  READLINE='$(READLINE_DIR)/libreadline.a'
     35  READLINE_DEPS='$(READLINE)'
     36  READLINE_CFLAGS='-I$(READLINE_SRC)/..'
    3537fi
    3638AC_SUBST(READLINE)
     39AC_SUBST(READLINE_DEPS)
     40AC_SUBST(READLINE_CFLAGS)
     41
    3742SIM_AC_OUTPUT
  • sim/erc32/erc32.c

    diff -Naur gdb-6.8.orig/sim/erc32/erc32.c gdb-6.8/sim/erc32/erc32.c
    old new  
    2424
    2525#include <sys/types.h>
    2626#include <stdio.h>
     27#include <string.h>
    2728#include <termios.h>
    2829#include <sys/fcntl.h>
    2930#include <sys/file.h>
     
    413414    if (rom8) mec_memcfg &= ~0x20000;
    414415    else mec_memcfg |= 0x20000;
    415416
    416     mem_ramsz = (256 * 1024) << ((mec_memcfg >> 10) & 7);
     417    mem_ramsz = (512 * 1024) << ((mec_memcfg >> 10) & 7);
    417418    mem_romsz = (128 * 1024) << ((mec_memcfg >> 18) & 7);
    418419
    419420    if (sparclite_board) {
     
    16591660        errmec = 0;
    16601661        return(1);
    16611662    }
    1662 #endif;
     1663#endif
    16631664
    16641665    if ((addr >= mem_ramstart) && (addr < (mem_ramstart + mem_ramsz))) {
    16651666        fetch_bytes (asi, &ramb[addr & mem_rammask], data, sz);
     
    17361737        errmec = 0;
    17371738        return(1);
    17381739    }
    1739 #endif;
     1740#endif
    17401741
    17411742    if ((addr >= mem_ramstart) && (addr < (mem_ramstart + mem_ramsz))) {
    17421743        if (mem_accprot) {
  • sim/erc32/exec.c

    diff -Naur gdb-6.8.orig/sim/erc32/exec.c gdb-6.8/sim/erc32/exec.c
    old new  
    17131713            sregs->fdp[rs2 | 1] = sregs->fs[rs2 & ~1];
    17141714            sregs->fdp[rs2 & ~1] = sregs->fs[rs2 | 1];
    17151715    default:
    1716       ;
     1716      break;
    17171717    }
    17181718#endif
    17191719
     
    18861886        sregs->fs[rd & ~1] = sregs->fdp[rd | 1];
    18871887        sregs->fs[rd | 1] = sregs->fdp[rd & ~1];
    18881888    default:
    1889       ;
     1889      break;
    18901890    }
    18911891#endif
    18921892    if (sregs->fpstate == FP_EXC_PE) {
  • sim/erc32/Makefile.in

    diff -Naur gdb-6.8.orig/sim/erc32/Makefile.in gdb-6.8/sim/erc32/Makefile.in
    old new  
    1818
    1919## COMMON_PRE_CONFIG_FRAG
    2020
    21 TERMCAP_LIB = @TERMCAP@
     21# TERMCAP_LIB = -lncurses
    2222READLINE_LIB = @READLINE@
    2323
    2424SIM_OBJS = exec.o erc32.o func.o help.o float.o interf.o
    2525SIM_EXTRA_LIBS = $(READLINE_LIB) $(TERMCAP_LIB) -lm
    26 SIM_EXTRA_ALL = sis
     26SIM_EXTRA_ALL = sis$(EXEEXT)
    2727SIM_EXTRA_INSTALL = install-sis
    2828SIM_EXTRA_CLEAN = clean-sis
    2929
     
    3737# `sis' doesn't need interf.o.
    3838SIS_OFILES = exec.o erc32.o func.o help.o float.o
    3939
    40 sis: sis.o $(SIS_OFILES) $(COMMON_OBJS) $(LIBDEPS)
    41         $(CC) $(ALL_CFLAGS) -o sis \
     40sis$(EXEEXT): sis.o $(SIS_OFILES) $(COMMON_OBJS) $(LIBDEPS)
     41        $(CC) $(ALL_CFLAGS) -o sis$(EXEEXT) \
    4242          sis.o $(SIS_OFILES) $(COMMON_OBJS) $(EXTRA_LIBS)
    4343
    4444# FIXME: This computes the build host's endianness, doesn't it?
     
    5151
    5252# Copy the files into directories where they will be run.
    5353install-sis: installdirs
    54         n=`echo sis | sed '$(program_transform_name)'`; \
    55         $(INSTALL_PROGRAM) sis$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT)
     54        n=`echo sis$(EXEEXT) | sed '$(program_transform_name)'`; \
     55        $(INSTALL_PROGRAM) sis$(EXEEXT) $(DESTDIR)$(bindir)/$$n
    5656
    5757clean-sis:
    58         rm -f sis end end.h
     58        rm -f sis$(EXEEXT) end end.h
    5959
    6060configure:
    6161        @echo "Rebuilding configure..."
  • sim/ppc/configure.ac

    diff -Naur gdb-6.8.orig/sim/ppc/configure.ac gdb-6.8/sim/ppc/configure.ac
    old new  
    209209esac
    210210])dnl
    211211
     212AC_CACHE_CHECK([if union semun defined],
     213  ac_cv_HAS_UNION_SEMUN,
     214  [AC_TRY_COMPILE([
     215#include <sys/types.h>
     216#include <sys/ipc.h>
     217#include <sys/sem.h>],
     218[union semun arg ;],
     219[ac_cv_has_union_semun="yes"],
     220[ac_cv_has_union_semun="no"])
     221AC_MSG_RESULT($ac_cv_has_union_semun)
     222])
     223
     224
     225if test "$ac_cv_has_union_semun" = "yes"; then
     226  AC_CACHE_CHECK(whether System V semaphores are supported,
     227  ac_cv_sysv_sem,
     228  [
     229  AC_TRY_RUN(
     230  [
     231  #include <sys/types.h>
     232  #include <sys/ipc.h>
     233  #include <sys/sem.h>
     234  int main () {
     235    union semun arg ;
     236
     237    int id=semget(IPC_PRIVATE,1,IPC_CREAT|0400);
     238    if (id == -1)
     239      exit(1);
     240    arg.val = 0; /* avoid implicit type cast to union */
     241    if (semctl(id, 0, IPC_RMID, arg) == -1)
     242      exit(1);
     243    exit(0);
     244  }
     245  ],
     246  ac_cv_sysv_sem="yes", ac_cv_sysv_sem="no", :)
     247  ])
     248else  # semun is not defined
     249  AC_CACHE_CHECK(whether System V semaphores are supported,
     250  ac_cv_sysv_sem,
     251  [
     252  AC_TRY_RUN(
     253  [
     254  #include <sys/types.h>
     255  #include <sys/ipc.h>
     256  #include <sys/sem.h>
     257  union semun {
     258    int val;
     259    struct semid_ds *buf;
     260    ushort *array;
     261  };
     262  int main () {
     263    union semun arg ;
     264
     265    int id=semget(IPC_PRIVATE,1,IPC_CREAT|0400);
     266    if (id == -1)
     267      exit(1);
     268    arg.val = 0; /* avoid implicit type cast to union */
     269    if (semctl(id, 0, IPC_RMID, arg) == -1)
     270      exit(1);
     271    exit(0);
     272  }
     273  ],
     274  ac_cv_sysv_sem="yes", ac_cv_sysv_sem="no", :)
     275  ])
     276fi
     277
     278AC_CACHE_CHECK(whether System V shared memory is supported,
     279ac_cv_sysv_shm,
     280[
     281AC_TRY_RUN([
     282#include <sys/types.h>
     283#include <sys/ipc.h>
     284#include <sys/shm.h>
     285int main () {
     286  int id=shmget(IPC_PRIVATE,1,IPC_CREAT|0400);
     287  if (id == -1)
     288    exit(1);
     289  if (shmctl(id, IPC_RMID, 0) == -1)
     290    exit(1);
     291  exit(0);
     292}
     293],
     294ac_cv_sysv_shm="yes", ac_cv_sysv_shm="no", :)
     295])
     296
     297if test x"$ac_cv_sysv_shm" = x"yes" -a x"$ac_cv_sysv_sem" = x"yes" ; then
     298  sim_sysv_ipc_hw=",sem,shm";
     299else
     300  sim_sysv_ipc_hw="";
     301fi
     302
     303if test x"$ac_cv_has_union_semun" = x"yes" -a x"$ac_cv_sysv_sem" = x"yes" ; then
     304  sim_hwflags="-DHAS_UNION_SEMUN";
     305fi
     306
    212307
    213308AC_ARG_ENABLE(sim-hardware,
    214309[  --enable-sim-hardware=list           Specify the hardware to be included in the build.],
    215 [hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide"
     310[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide${sim_sysv_ipc_hw}"
    216311case "${enableval}" in
    217312  yes)  ;;
    218313  no)   AC_MSG_ERROR("List of hardware must be specified for --enable-sim-hardware"); hardware="";;
     
    224319sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
    225320if test x"$silent" != x"yes" && test x"$hardware" != x""; then
    226321  echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
    227 fi],[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide"
     322fi],[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal,com,eeprom,opic,glue,phb,ide${sim_sysv_ipc_hw}"
    228323sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
    229324sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
    230325if test x"$silent" != x"yes"; then
    231326  echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
    232327fi])dnl
    233328
    234 
    235329AC_ARG_ENABLE(sim-hostbitsize,
    236330[  --enable-sim-hostbitsize=32|64       Specify host bitsize (32 or 64).],
    237331[case "${enableval}" in
  • sim/ppc/debug.c

    diff -Naur gdb-6.8.orig/sim/ppc/debug.c gdb-6.8/sim/ppc/debug.c
    old new  
    7070  { trace_pass_device, "pass-device" },
    7171  { trace_phb_device, "phb-device" },
    7272  { trace_register_device, "register-device", "Device initializing registers" },
     73  { trace_sem_device, "sem-device" },
     74  { trace_shm_device, "shm-device" },
    7375  { trace_stack_device, "stack-device" },
    7476  { trace_vm_device, "vm-device" },
    7577  /* packages */
  • sim/ppc/debug.h

    diff -Naur gdb-6.8.orig/sim/ppc/debug.h gdb-6.8/sim/ppc/debug.h
    old new  
    5151  trace_pal_device,
    5252  trace_pass_device,
    5353  trace_phb_device,
     54  trace_sem_device,
     55  trace_shm_device,
    5456  trace_stack_device,
    5557  trace_register_device,
    5658  trace_vm_device,
  • sim/ppc/hw_sem.c

    diff -Naur gdb-6.8.orig/sim/ppc/hw_sem.c gdb-6.8/sim/ppc/hw_sem.c
    old new  
     1/*  This file is part of the program psim.
     2
     3    Copyright (C) 1997,2008, Joel Sherrill <joel@OARcorp.com>
     4
     5    This program is free software; you can redistribute it and/or modify
     6    it under the terms of the GNU General Public License as published by
     7    the Free Software Foundation; either version 2 of the License, or
     8    (at your option) any later version.
     9
     10    This program is distributed in the hope that it will be useful,
     11    but WITHOUT ANY WARRANTY; without even the implied warranty of
     12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13    GNU General Public License for more details.
     14 
     15    You should have received a copy of the GNU General Public License
     16    along with this program; if not, write to the Free Software
     17    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
     18 
     19    */
     20
     21
     22#ifndef _HW_SEM_C_
     23#define _HW_SEM_C_
     24
     25#include "device_table.h"
     26
     27#ifdef HAVE_STRING_H
     28#include <string.h>
     29#else
     30#ifdef HAVE_STRINGS_H
     31#include <strings.h>
     32#endif
     33#endif
     34
     35#include <sys/ipc.h>
     36#include <sys/sem.h>
     37
     38#include <errno.h>
     39
     40/* DEVICE
     41
     42
     43   sem - provide access to a unix semaphore
     44
     45
     46   DESCRIPTION
     47
     48
     49   This device implements an interface to a unix semaphore.
     50
     51
     52   PROPERTIES
     53
     54
     55   reg = <address> <size> (required)
     56
     57   Determine where the memory lives in the parents address space.
     58
     59   key = <integer> (required)
     60
     61   This is the key of the unix semaphore.
     62
     63   EXAMPLES
     64
     65
     66   Enable tracing of the sem:
     67
     68   |  bash$ psim -t sem-device \
     69
     70
     71   Configure a UNIX semaphore using key 0x12345678 mapped into psim
     72   address space at 0xfff00000:
     73
     74   |  -o '/sem@0xfff00000/reg 0xfff00000 0x80000' \
     75   |  -o '/sem@0xfff00000/key 0x12345678' \
     76
     77   sim/ppc/run -o '/#address-cells 1' \
     78         -o '/sem@0xc0000000/reg 0xc0000000 0x80000' \
     79         -o '/sem@0xc0000000/key 0x12345678' ../psim-hello/hello
     80
     81   REGISTERS
     82
     83   offset 0 - lock count
     84   offset 4 - lock operation
     85   offset 8 - unlock operation
     86
     87   All reads return the current or resulting count.
     88
     89   BUGS
     90
     91   None known.
     92
     93   */
     94
     95typedef struct _hw_sem_device {
     96  unsigned_word  physical_address;
     97  key_t          key;
     98  int            id;
     99  int            initial;
     100  int            count;
     101} hw_sem_device;
     102
     103static void
     104hw_sem_init_data(device *me)
     105{
     106  hw_sem_device *sem = (hw_sem_device*)device_data(me);
     107  const device_unit *d;
     108  int status;
     109#if !HAS_UNION_SEMUN
     110        union semun {
     111          int val;
     112          struct semid_ds *buf;
     113          unsigned short int *array;
     114#if defined(__linux__)
     115          struct seminfo *__buf;
     116#endif
     117        } ;
     118#endif
     119  union semun help;
     120
     121  /* initialize the properties of the sem */
     122
     123  if (device_find_property(me, "key") == NULL)
     124    error("sem_init_data() required key property is missing\n");
     125
     126  if (device_find_property(me, "value") == NULL)
     127    error("sem_init_data() required value property is missing\n");
     128
     129  sem->key = (key_t) device_find_integer_property(me, "key");
     130  DTRACE(sem, ("semaphore key (%d)\n", sem->key) );
     131
     132  sem->initial = (int) device_find_integer_property(me, "value");
     133  DTRACE(sem, ("semaphore initial value (%d)\n", sem->initial) );
     134
     135  d = device_unit_address(me);
     136  sem->physical_address = d->cells[ d->nr_cells-1 ];
     137  DTRACE(sem, ("semaphore physical_address=0x%x\n", sem->physical_address));
     138
     139  /* Now to initialize the semaphore */
     140
     141  if ( sem->initial != -1 ) {
     142
     143    sem->id = semget(sem->key, 1, IPC_CREAT | 0660);
     144    if (sem->id == -1)
     145      error("hw_sem_init_data() semget failed\n");
     146
     147    help.val = sem->initial;
     148    status = semctl( sem->id, 0, SETVAL, help );
     149    if (status == -1)
     150      error("hw_sem_init_data() semctl -- set value failed\n");
     151
     152  } else {
     153    sem->id = semget(sem->key, 1, 0660);
     154    if (sem->id == -1)
     155      error("hw_sem_init_data() semget failed\n");
     156  }
     157
     158  sem->count = semctl( sem->id, 0, GETVAL, help );
     159  if (sem->count == -1)
     160    error("hw_sem_init_data() semctl -- get value failed\n");
     161  DTRACE(sem, ("semaphore OS value (%d)\n", sem->count) );
     162
     163  if (sizeof(int) != 4)
     164    error("hw_sem_init_data() typing problem\n");
     165}
     166
     167static void
     168hw_sem_attach_address_callback(device *me,
     169                                attach_type attach,
     170                                int space,
     171                                unsigned_word addr,
     172                                unsigned nr_bytes,
     173                                access_type access,
     174                                device *client) /*callback/default*/
     175{
     176  hw_sem_device *sem = (hw_sem_device*)device_data(me);
     177
     178  if (space != 0)
     179    error("sem_attach_address_callback() invalid address space\n");
     180
     181  if (nr_bytes == 12)
     182    error("sem_attach_address_callback() invalid size\n");
     183
     184  sem->physical_address = addr;
     185  DTRACE(sem, ("semaphore physical_address=0x%x\n", addr));
     186}
     187
     188static unsigned
     189hw_sem_io_read_buffer(device *me,
     190                         void *dest,
     191                         int space,
     192                         unsigned_word addr,
     193                         unsigned nr_bytes,
     194                         cpu *processor,
     195                         unsigned_word cia)
     196{
     197  hw_sem_device *sem = (hw_sem_device*)device_data(me);
     198  struct sembuf sb;
     199  int status;
     200  unsigned32 u32;
     201#if !HAS_UNION_SEMUN
     202        union semun {
     203          int val;
     204          struct semid_ds *buf;
     205          unsigned short int *array;
     206#if defined(__linux__)
     207          struct seminfo *__buf;
     208#endif
     209        } ;
     210#endif
     211  union semun help;
     212
     213  /* do we need to worry about out of range addresses? */
     214
     215  DTRACE(sem, ("semaphore read addr=0x%x length=%d\n", addr, nr_bytes));
     216
     217  if (!(addr >= sem->physical_address && addr <= sem->physical_address + 11))
     218    error("hw_sem_io_read_buffer() invalid address - out of range\n");
     219
     220  if ((addr % 4) != 0)
     221    error("hw_sem_io_read_buffer() invalid address - alignment\n");
     222
     223  if (nr_bytes != 4)
     224    error("hw_sem_io_read_buffer() invalid length\n");
     225
     226  switch ( (addr - sem->physical_address) / 4 ) {
     227
     228    case 0:  /* OBTAIN CURRENT VALUE */
     229      break;
     230
     231    case 1:  /* LOCK */
     232      sb.sem_num = 0;
     233      sb.sem_op  = -1;
     234      sb.sem_flg = 0;
     235
     236      status = semop(sem->id, &sb, 1);
     237      if (status == -1) {
     238        perror( "hw_sem.c: lock" );
     239        error("hw_sem_io_read_buffer() sem lock\n");
     240      }
     241
     242      DTRACE(sem, ("semaphore lock %d\n", sem->count));
     243      break;
     244
     245    case 2: /* UNLOCK */
     246      sb.sem_num = 0;
     247      sb.sem_op  = 1;
     248      sb.sem_flg = 0;
     249
     250      status = semop(sem->id, &sb, 1);
     251      if (status == -1) {
     252        perror( "hw_sem.c: unlock" );
     253        error("hw_sem_io_read_buffer() sem unlock\n");
     254      }
     255      DTRACE(sem, ("semaphore unlock %d\n", sem->count));
     256      break;
     257
     258    default:
     259      error("hw_sem_io_read_buffer() invalid address - unknown error\n");
     260      break;
     261  }
     262
     263  /* assume target is big endian */
     264  u32 = H2T_4(semctl( sem->id, 0, GETVAL, help ));
     265
     266  DTRACE(sem, ("semaphore OS value (%d)\n", u32) );
     267  if (u32 == 0xffffffff) {
     268    perror( "hw_sem.c: getval" );
     269    error("hw_sem_io_read_buffer() semctl -- get value failed\n");
     270  }
     271
     272  memcpy(dest, &u32, nr_bytes);
     273  return nr_bytes;
     274
     275}
     276
     277static device_callbacks const hw_sem_callbacks = {
     278  { generic_device_init_address, hw_sem_init_data },
     279  { hw_sem_attach_address_callback, }, /* address */
     280  { hw_sem_io_read_buffer, NULL }, /* IO */
     281  { NULL, }, /* DMA */
     282  { NULL, }, /* interrupt */
     283  { NULL, }, /* unit */
     284  NULL,
     285};
     286
     287static void *
     288hw_sem_create(const char *name,
     289                 const device_unit *unit_address,
     290                 const char *args)
     291{
     292  hw_sem_device *sem = ZALLOC(hw_sem_device);
     293  return sem;
     294}
     295
     296const device_descriptor hw_sem_device_descriptor[] = {
     297  { "sem", hw_sem_create, &hw_sem_callbacks },
     298  { NULL },
     299};
     300
     301#endif /* _HW_SEM_C_ */
  • sim/ppc/hw_shm.c

    diff -Naur gdb-6.8.orig/sim/ppc/hw_shm.c gdb-6.8/sim/ppc/hw_shm.c
    old new  
     1/*  This file is part of the program psim.
     2
     3    Copyright (C) 1997,2008, Joel Sherrill <joel@OARcorp.com>
     4
     5    This program is free software; you can redistribute it and/or modify
     6    it under the terms of the GNU General Public License as published by
     7    the Free Software Foundation; either version 2 of the License, or
     8    (at your option) any later version.
     9
     10    This program is distributed in the hope that it will be useful,
     11    but WITHOUT ANY WARRANTY; without even the implied warranty of
     12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13    GNU General Public License for more details.
     14 
     15    You should have received a copy of the GNU General Public License
     16    along with this program; if not, write to the Free Software
     17    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
     18 
     19    */
     20
     21
     22#ifndef _HW_SHM_C_
     23#define _HW_SHM_C_
     24
     25#include "device_table.h"
     26
     27#ifdef HAVE_STRING_H
     28#include <string.h>
     29#else
     30#ifdef HAVE_STRINGS_H
     31#include <strings.h>
     32#endif
     33#endif
     34
     35#include <sys/ipc.h>
     36#include <sys/shm.h>
     37
     38
     39/* DEVICE
     40
     41
     42   shm - map unix shared memory into psim address space
     43
     44
     45   DESCRIPTION
     46
     47
     48   This device implements an area of memory which is mapped into UNIX
     49   shared memory.
     50
     51
     52   PROPERTIES
     53
     54
     55   reg = <address> <size> (required)
     56
     57   Determine where the memory lives in the parents address space.
     58   The SHM area is assumed to be of the same length.
     59
     60   key = <integer> (required)
     61
     62   This is the key of the unix shared memory area.
     63
     64   EXAMPLES
     65
     66
     67   Enable tracing of the shm:
     68
     69   |  bash$ psim -t shm-device \
     70
     71
     72   Configure a 512 kilobytes of UNIX shared memory with the key 0x12345678
     73   mapped into psim address space at 0x0c000000.
     74
     75   |  -o '/shm@0x0c000000/reg 0x0c000000 0x80000' \
     76   |  -o '/shm@0x0c000000/key 0x12345678' \
     77
     78   sim/ppc/run -o '/#address-cells 1' \
     79         -o '/shm@0x0c000000/reg 0x0c000000 0x80000' \
     80         -o '/shm@0x0c000000/key 0x12345678' ../psim-hello/hello
     81
     82   BUGS
     83
     84   None known.
     85
     86   */
     87
     88typedef struct _hw_shm_device {
     89  unsigned_word  physical_address;
     90  char          *shm_address;
     91  unsigned       sizeof_memory;
     92  key_t          key;
     93  int            id;
     94} hw_shm_device;
     95
     96static void
     97hw_shm_init_data(device *me)
     98{
     99  hw_shm_device *shm = (hw_shm_device*)device_data(me);
     100  const device_unit *d;
     101  reg_property_spec reg;
     102  int i;
     103
     104  /* Obtain the Key Value */
     105  if (device_find_property(me, "key") == NULL)
     106    error("shm_init_data() required key property is missing\n");
     107
     108  shm->key = (key_t) device_find_integer_property(me, "key");
     109  DTRACE(shm, ("shm key (0x%08x)\n", shm->key) );
     110 
     111  /* Figure out where this memory is in address space and how long it is */
     112  if ( !device_find_reg_array_property(me, "reg", 0, &reg) )
     113    error("hw_shm_init_data() no address registered\n");
     114
     115  /* Determine the address and length being as paranoid as possible */
     116  shm->physical_address = 0xffffffff;
     117  shm->sizeof_memory = 0xffffffff;
     118
     119  for ( i=0 ; i<reg.address.nr_cells; i++ ) {
     120    if (reg.address.cells[0] == 0 && reg.size.cells[0] == 0)
     121      continue;
     122
     123    if ( shm->physical_address != 0xffffffff )
     124      device_error(me, "Only single celled address ranges supported\n");
     125
     126    shm->physical_address = reg.address.cells[i];
     127    DTRACE(shm, ("shm physical_address=0x%x\n", shm->physical_address));
     128
     129    shm->sizeof_memory = reg.size.cells[i];
     130    DTRACE(shm, ("shm length=0x%x\n", shm->sizeof_memory));
     131  }
     132
     133  if ( shm->physical_address == 0xffffffff )
     134    device_error(me, "Address not specified\n" );
     135
     136  if ( shm->sizeof_memory == 0xffffffff )
     137    device_error(me, "Length not specified\n" );
     138
     139  /* Now actually attach to or create the shared memory area */
     140  shm->id = shmget(shm->key, shm->sizeof_memory, IPC_CREAT | 0660);
     141  if (shm->id == -1)
     142    error("hw_shm_init_data() shmget failed\n");
     143
     144  shm->shm_address = shmat(shm->id, (char *)0, SHM_RND);
     145  if (shm->shm_address == (void *)-1)
     146    error("hw_shm_init_data() shmat failed\n");
     147}
     148
     149static void
     150hw_shm_attach_address_callback(device *me,
     151                                attach_type attach,
     152                                int space,
     153                                unsigned_word addr,
     154                                unsigned nr_bytes,
     155                                access_type access,
     156                                device *client) /*callback/default*/
     157{
     158  hw_shm_device *shm = (hw_shm_device*)device_data(me);
     159
     160  if (space != 0)
     161    error("shm_attach_address_callback() invalid address space\n");
     162
     163  if (nr_bytes == 0)
     164    error("shm_attach_address_callback() invalid size\n");
     165}
     166
     167
     168static unsigned
     169hw_shm_io_read_buffer(device *me,
     170                         void *dest,
     171                         int space,
     172                         unsigned_word addr,
     173                         unsigned nr_bytes,
     174                         cpu *processor,
     175                         unsigned_word cia)
     176{
     177  hw_shm_device *shm = (hw_shm_device*)device_data(me);
     178
     179  /* do we need to worry about out of range addresses? */
     180
     181  DTRACE(shm, ("read %p %x %x %x\n", \
     182     shm->shm_address, shm->physical_address, addr, nr_bytes) );
     183
     184  memcpy(dest, &shm->shm_address[addr - shm->physical_address], nr_bytes);
     185  return nr_bytes;
     186}
     187
     188
     189static unsigned
     190hw_shm_io_write_buffer(device *me,
     191                          const void *source,
     192                          int space,
     193                          unsigned_word addr,
     194                          unsigned nr_bytes,
     195                          cpu *processor,
     196                          unsigned_word cia)
     197{
     198  hw_shm_device *shm = (hw_shm_device*)device_data(me);
     199
     200  /* do we need to worry about out of range addresses? */
     201
     202  DTRACE(shm, ("write %p %x %x %x\n", \
     203     shm->shm_address, shm->physical_address, addr, nr_bytes) );
     204
     205  memcpy(&shm->shm_address[addr - shm->physical_address], source, nr_bytes);
     206  return nr_bytes;
     207}
     208
     209static device_callbacks const hw_shm_callbacks = {
     210  { generic_device_init_address, hw_shm_init_data },
     211  { hw_shm_attach_address_callback, }, /* address */
     212  { hw_shm_io_read_buffer,
     213    hw_shm_io_write_buffer }, /* IO */
     214  { NULL, }, /* DMA */
     215  { NULL, }, /* interrupt */
     216  { NULL, }, /* unit */
     217  NULL,
     218};
     219
     220static void *
     221hw_shm_create(const char *name,
     222                 const device_unit *unit_address,
     223                 const char *args)
     224{
     225  hw_shm_device *shm = ZALLOC(hw_shm_device);
     226  return shm;
     227}
     228
     229
     230
     231const device_descriptor hw_shm_device_descriptor[] = {
     232  { "shm", hw_shm_create, &hw_shm_callbacks },
     233  { NULL },
     234};
     235
     236#endif /* _HW_SHM_C_ */
  • sim/ppc/Makefile.in

    diff -Naur gdb-6.8.orig/sim/ppc/Makefile.in gdb-6.8/sim/ppc/Makefile.in
    old new  
    834834hw_pal.o: hw_pal.c $(DEVICE_TABLE_H) $(CPU_H)
    835835hw_phb.o: hw_phb.c $(DEVICE_TABLE_H) $(HW_PHB_H) $(COREFILE_H)
    836836hw_register.o: hw_register.c $(DEVICE_TABLE_H) $(PSIM_H)
     837hw_sem.o: hw_sem.c $(DEVICE_TABLE_H) $(PSIM_H)
     838hw_shm.o: hw_shm.c $(DEVICE_TABLE_H) $(PSIM_H)
    837839hw_trace.o: hw_trace.c $(DEVICE_TABLE_H)
    838840hw_vm.o: hw_vm.c $(DEVICE_TABLE_H) $(CPU_H)
    839841# ignore this line, it stops make from getting confused
  • sim/ppc/ppc-instructions

    diff -Naur gdb-6.8.orig/sim/ppc/ppc-instructions gdb-6.8/sim/ppc/ppc-instructions
    old new  
    34023402            case spr_dec:
    34033403              *rT = cpu_get_decrementer(processor);
    34043404              break;
     3405                case spr_tbrl:
     3406                  if (is_64bit_implementation) *rT = TB;
     3407                  else                         *rT = EXTRACTED64(TB, 32, 63);
     3408                break;
     3409                case spr_tbru:
     3410                  if (is_64bit_implementation) *rT = EXTRACTED64(TB, 0, 31);
     3411                  else                         *rT = EXTRACTED64(TB, 0, 31);
     3412                break;
    34053413            case spr_tbu:
    34063414            case spr_tbl:
    34073415              /* NOTE - these SPR's are not readable. Use mftb[ul] */
  • sim/ppc/ppc-spr-table

    diff -Naur gdb-6.8.orig/sim/ppc/ppc-spr-table gdb-6.8/sim/ppc/ppc-spr-table
    old new  
    3232SRR0:26:0:0
    3333SRR1:27:0:0
    3434VRSAVE:256:0:0
     35TBRL:268:0:0
     36TBRU:269:0:0
    3537SPRG0:272:0:0
    3638SPRG1:273:0:0
    3739SPRG2:274:0:0
Note: See TracBrowser for help on using the repository browser.