URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/gnu-stable/newlib-1.18.0/libgloss/mips
- from Rev 816 to Rev 829
- ↔ Reverse comparison
Rev 816 → Rev 829
/idtecoff.ld
0,0 → 1,99
/* The following TEXT start address leaves space for the monitor |
workspace. i.e. the NEC VR4300 (IDT) first free address is actually |
0xa001af20. */ |
|
ENTRY(_start) |
STARTUP(crt0.o) |
OUTPUT_ARCH("mips:4000") |
OUTPUT_FORMAT("ecoff-bigmips", "ecoff-bigmips", "ecoff-littlemips") |
GROUP(-lc -lidt -lgcc) |
SEARCH_DIR(.) |
__DYNAMIC = 0; |
|
/* |
* Allocate the stack to be at the top of memory, since the stack |
* grows down |
*/ |
PROVIDE (__stack = 0); |
/* PROVIDE (__global = 0); */ |
|
/* |
* Initalize some symbols to be zero so we can reference them in the |
* crt0 without core dumping. These functions are all optional, but |
* we do this so we can have our crt0 always use them if they exist. |
* This is so BSPs work better when using the crt0 installed with gcc. |
* We have to initalize them twice, so we multiple object file |
* formats, as some prepend an underscore. |
*/ |
PROVIDE (hardware_exit_hook = 0); |
PROVIDE (hardware_hazard_hook = 0); |
PROVIDE (hardware_init_hook = 0); |
PROVIDE (software_init_hook = 0); |
|
SECTIONS |
{ |
. = 0xA0020000; |
.text : { |
_ftext = . ; |
KEEP (*(.init)) |
eprol = .; |
*(.text) |
*(.text.*) |
*(.gnu.linkonce.t.*) |
*(.mips16.fn.*) |
*(.mips16.call.*) |
PROVIDE (__runtime_reloc_start = .); |
*(.rel.sdata) |
PROVIDE (__runtime_reloc_stop = .); |
KEEP (*(.fini)) |
etext = .; |
_etext = .; |
} |
. = .; |
.rdata : { |
*(.rdata) |
*(.rodata) |
*(.rodata.*) |
*(.gnu.linkonce.r.*) |
} |
_fdata = ALIGN(16); |
.data : { |
*(.data) |
*(.data.*) |
*(.gnu.linkonce.d.*) |
CONSTRUCTORS |
} |
. = ALIGN(8); |
_gp = . + 0x8000; |
__global = _gp; |
.lit8 : { |
*(.lit8) |
} |
.lit4 : { |
*(.lit4) |
} |
.sdata : { |
*(.sdata) |
*(.sdata.*) |
*(.gnu.linkonce.s.*) |
} |
. = ALIGN(4); |
edata = .; |
_edata = .; |
_fbss = .; |
.sbss : { |
*(.sbss) |
*(.sbss.*) |
*(.gnu.linkonce.sb.*) |
*(.scommon) |
} |
.bss : { |
_bss_start = . ; |
*(.bss) |
*(.bss.*) |
*(.gnu.linkonce.b.*) |
*(COMMON) |
} |
end = .; |
_end = .; |
} |
/configure
0,0 → 1,3806
#! /bin/sh |
# Guess values for system-dependent variables and create Makefiles. |
# Generated by GNU Autoconf 2.61. |
# |
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, |
# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. |
# This configure script is free software; the Free Software Foundation |
# gives unlimited permission to copy, distribute and modify it. |
## --------------------- ## |
## M4sh Initialization. ## |
## --------------------- ## |
|
# Be more Bourne compatible |
DUALCASE=1; export DUALCASE # for MKS sh |
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then |
emulate sh |
NULLCMD=: |
# Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which |
# is contrary to our usage. Disable this feature. |
alias -g '${1+"$@"}'='"$@"' |
setopt NO_GLOB_SUBST |
else |
case `(set -o) 2>/dev/null` in |
*posix*) set -o posix ;; |
esac |
|
fi |
|
|
|
|
# PATH needs CR |
# Avoid depending upon Character Ranges. |
as_cr_letters='abcdefghijklmnopqrstuvwxyz' |
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' |
as_cr_Letters=$as_cr_letters$as_cr_LETTERS |
as_cr_digits='0123456789' |
as_cr_alnum=$as_cr_Letters$as_cr_digits |
|
# The user is always right. |
if test "${PATH_SEPARATOR+set}" != set; then |
echo "#! /bin/sh" >conf$$.sh |
echo "exit 0" >>conf$$.sh |
chmod +x conf$$.sh |
if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then |
PATH_SEPARATOR=';' |
else |
PATH_SEPARATOR=: |
fi |
rm -f conf$$.sh |
fi |
|
# Support unset when possible. |
if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then |
as_unset=unset |
else |
as_unset=false |
fi |
|
|
# IFS |
# We need space, tab and new line, in precisely that order. Quoting is |
# there to prevent editors from complaining about space-tab. |
# (If _AS_PATH_WALK were called with IFS unset, it would disable word |
# splitting by setting IFS to empty value.) |
as_nl=' |
' |
IFS=" "" $as_nl" |
|
# Find who we are. Look in the path if we contain no directory separator. |
case $0 in |
*[\\/]* ) as_myself=$0 ;; |
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break |
done |
IFS=$as_save_IFS |
|
;; |
esac |
# We did not find ourselves, most probably we were run as `sh COMMAND' |
# in which case we are not to be found in the path. |
if test "x$as_myself" = x; then |
as_myself=$0 |
fi |
if test ! -f "$as_myself"; then |
echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 |
{ (exit 1); exit 1; } |
fi |
|
# Work around bugs in pre-3.0 UWIN ksh. |
for as_var in ENV MAIL MAILPATH |
do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var |
done |
PS1='$ ' |
PS2='> ' |
PS4='+ ' |
|
# NLS nuisances. |
for as_var in \ |
LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ |
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ |
LC_TELEPHONE LC_TIME |
do |
if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then |
eval $as_var=C; export $as_var |
else |
($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var |
fi |
done |
|
# Required to use basename. |
if expr a : '\(a\)' >/dev/null 2>&1 && |
test "X`expr 00001 : '.*\(...\)'`" = X001; then |
as_expr=expr |
else |
as_expr=false |
fi |
|
if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then |
as_basename=basename |
else |
as_basename=false |
fi |
|
|
# Name of the executable. |
as_me=`$as_basename -- "$0" || |
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ |
X"$0" : 'X\(//\)$' \| \ |
X"$0" : 'X\(/\)' \| . 2>/dev/null || |
echo X/"$0" | |
sed '/^.*\/\([^/][^/]*\)\/*$/{ |
s//\1/ |
q |
} |
/^X\/\(\/\/\)$/{ |
s//\1/ |
q |
} |
/^X\/\(\/\).*/{ |
s//\1/ |
q |
} |
s/.*/./; q'` |
|
# CDPATH. |
$as_unset CDPATH |
|
|
if test "x$CONFIG_SHELL" = x; then |
if (eval ":") 2>/dev/null; then |
as_have_required=yes |
else |
as_have_required=no |
fi |
|
if test $as_have_required = yes && (eval ": |
(as_func_return () { |
(exit \$1) |
} |
as_func_success () { |
as_func_return 0 |
} |
as_func_failure () { |
as_func_return 1 |
} |
as_func_ret_success () { |
return 0 |
} |
as_func_ret_failure () { |
return 1 |
} |
|
exitcode=0 |
if as_func_success; then |
: |
else |
exitcode=1 |
echo as_func_success failed. |
fi |
|
if as_func_failure; then |
exitcode=1 |
echo as_func_failure succeeded. |
fi |
|
if as_func_ret_success; then |
: |
else |
exitcode=1 |
echo as_func_ret_success failed. |
fi |
|
if as_func_ret_failure; then |
exitcode=1 |
echo as_func_ret_failure succeeded. |
fi |
|
if ( set x; as_func_ret_success y && test x = \"\$1\" ); then |
: |
else |
exitcode=1 |
echo positional parameters were not saved. |
fi |
|
test \$exitcode = 0) || { (exit 1); exit 1; } |
|
( |
as_lineno_1=\$LINENO |
as_lineno_2=\$LINENO |
test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && |
test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } |
") 2> /dev/null; then |
: |
else |
as_candidate_shells= |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
case $as_dir in |
/*) |
for as_base in sh bash ksh sh5; do |
as_candidate_shells="$as_candidate_shells $as_dir/$as_base" |
done;; |
esac |
done |
IFS=$as_save_IFS |
|
|
for as_shell in $as_candidate_shells $SHELL; do |
# Try only shells that exist, to save several forks. |
if { test -f "$as_shell" || test -f "$as_shell.exe"; } && |
{ ("$as_shell") 2> /dev/null <<\_ASEOF |
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then |
emulate sh |
NULLCMD=: |
# Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which |
# is contrary to our usage. Disable this feature. |
alias -g '${1+"$@"}'='"$@"' |
setopt NO_GLOB_SUBST |
else |
case `(set -o) 2>/dev/null` in |
*posix*) set -o posix ;; |
esac |
|
fi |
|
|
: |
_ASEOF |
}; then |
CONFIG_SHELL=$as_shell |
as_have_required=yes |
if { "$as_shell" 2> /dev/null <<\_ASEOF |
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then |
emulate sh |
NULLCMD=: |
# Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which |
# is contrary to our usage. Disable this feature. |
alias -g '${1+"$@"}'='"$@"' |
setopt NO_GLOB_SUBST |
else |
case `(set -o) 2>/dev/null` in |
*posix*) set -o posix ;; |
esac |
|
fi |
|
|
: |
(as_func_return () { |
(exit $1) |
} |
as_func_success () { |
as_func_return 0 |
} |
as_func_failure () { |
as_func_return 1 |
} |
as_func_ret_success () { |
return 0 |
} |
as_func_ret_failure () { |
return 1 |
} |
|
exitcode=0 |
if as_func_success; then |
: |
else |
exitcode=1 |
echo as_func_success failed. |
fi |
|
if as_func_failure; then |
exitcode=1 |
echo as_func_failure succeeded. |
fi |
|
if as_func_ret_success; then |
: |
else |
exitcode=1 |
echo as_func_ret_success failed. |
fi |
|
if as_func_ret_failure; then |
exitcode=1 |
echo as_func_ret_failure succeeded. |
fi |
|
if ( set x; as_func_ret_success y && test x = "$1" ); then |
: |
else |
exitcode=1 |
echo positional parameters were not saved. |
fi |
|
test $exitcode = 0) || { (exit 1); exit 1; } |
|
( |
as_lineno_1=$LINENO |
as_lineno_2=$LINENO |
test "x$as_lineno_1" != "x$as_lineno_2" && |
test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } |
|
_ASEOF |
}; then |
break |
fi |
|
fi |
|
done |
|
if test "x$CONFIG_SHELL" != x; then |
for as_var in BASH_ENV ENV |
do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var |
done |
export CONFIG_SHELL |
exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} |
fi |
|
|
if test $as_have_required = no; then |
echo This script requires a shell more modern than all the |
echo shells that I found on your system. Please install a |
echo modern shell, or manually run the script under such a |
echo shell if you do have one. |
{ (exit 1); exit 1; } |
fi |
|
|
fi |
|
fi |
|
|
|
(eval "as_func_return () { |
(exit \$1) |
} |
as_func_success () { |
as_func_return 0 |
} |
as_func_failure () { |
as_func_return 1 |
} |
as_func_ret_success () { |
return 0 |
} |
as_func_ret_failure () { |
return 1 |
} |
|
exitcode=0 |
if as_func_success; then |
: |
else |
exitcode=1 |
echo as_func_success failed. |
fi |
|
if as_func_failure; then |
exitcode=1 |
echo as_func_failure succeeded. |
fi |
|
if as_func_ret_success; then |
: |
else |
exitcode=1 |
echo as_func_ret_success failed. |
fi |
|
if as_func_ret_failure; then |
exitcode=1 |
echo as_func_ret_failure succeeded. |
fi |
|
if ( set x; as_func_ret_success y && test x = \"\$1\" ); then |
: |
else |
exitcode=1 |
echo positional parameters were not saved. |
fi |
|
test \$exitcode = 0") || { |
echo No shell found that supports shell functions. |
echo Please tell autoconf@gnu.org about your system, |
echo including any error possibly output before this |
echo message |
} |
|
|
|
as_lineno_1=$LINENO |
as_lineno_2=$LINENO |
test "x$as_lineno_1" != "x$as_lineno_2" && |
test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { |
|
# Create $as_me.lineno as a copy of $as_myself, but with $LINENO |
# uniformly replaced by the line number. The first 'sed' inserts a |
# line-number line after each line using $LINENO; the second 'sed' |
# does the real work. The second script uses 'N' to pair each |
# line-number line with the line containing $LINENO, and appends |
# trailing '-' during substitution so that $LINENO is not a special |
# case at line end. |
# (Raja R Harinath suggested sed '=', and Paul Eggert wrote the |
# scripts with optimization help from Paolo Bonzini. Blame Lee |
# E. McMahon (1931-1989) for sed's syntax. :-) |
sed -n ' |
p |
/[$]LINENO/= |
' <$as_myself | |
sed ' |
s/[$]LINENO.*/&-/ |
t lineno |
b |
:lineno |
N |
:loop |
s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ |
t loop |
s/-\n.*// |
' >$as_me.lineno && |
chmod +x "$as_me.lineno" || |
{ echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 |
{ (exit 1); exit 1; }; } |
|
# Don't try to exec as it changes $[0], causing all sort of problems |
# (the dirname of $[0] is not the place where we might find the |
# original and so on. Autoconf is especially sensitive to this). |
. "./$as_me.lineno" |
# Exit status is that of the last command. |
exit |
} |
|
|
if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then |
as_dirname=dirname |
else |
as_dirname=false |
fi |
|
ECHO_C= ECHO_N= ECHO_T= |
case `echo -n x` in |
-n*) |
case `echo 'x\c'` in |
*c*) ECHO_T=' ';; # ECHO_T is single tab character. |
*) ECHO_C='\c';; |
esac;; |
*) |
ECHO_N='-n';; |
esac |
|
if expr a : '\(a\)' >/dev/null 2>&1 && |
test "X`expr 00001 : '.*\(...\)'`" = X001; then |
as_expr=expr |
else |
as_expr=false |
fi |
|
rm -f conf$$ conf$$.exe conf$$.file |
if test -d conf$$.dir; then |
rm -f conf$$.dir/conf$$.file |
else |
rm -f conf$$.dir |
mkdir conf$$.dir |
fi |
echo >conf$$.file |
if ln -s conf$$.file conf$$ 2>/dev/null; then |
as_ln_s='ln -s' |
# ... but there are two gotchas: |
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. |
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. |
# In both cases, we have to default to `cp -p'. |
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || |
as_ln_s='cp -p' |
elif ln conf$$.file conf$$ 2>/dev/null; then |
as_ln_s=ln |
else |
as_ln_s='cp -p' |
fi |
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file |
rmdir conf$$.dir 2>/dev/null |
|
if mkdir -p . 2>/dev/null; then |
as_mkdir_p=: |
else |
test -d ./-p && rmdir ./-p |
as_mkdir_p=false |
fi |
|
if test -x / >/dev/null 2>&1; then |
as_test_x='test -x' |
else |
if ls -dL / >/dev/null 2>&1; then |
as_ls_L_option=L |
else |
as_ls_L_option= |
fi |
as_test_x=' |
eval sh -c '\'' |
if test -d "$1"; then |
test -d "$1/."; |
else |
case $1 in |
-*)set "./$1";; |
esac; |
case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in |
???[sx]*):;;*)false;;esac;fi |
'\'' sh |
' |
fi |
as_executable_p=$as_test_x |
|
# Sed expression to map a string onto a valid CPP name. |
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" |
|
# Sed expression to map a string onto a valid variable name. |
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" |
|
|
|
exec 7<&0 </dev/null 6>&1 |
|
# Name of the host. |
# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, |
# so uname gets run too. |
ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` |
|
# |
# Initializations. |
# |
ac_default_prefix=/usr/local |
ac_clean_files= |
ac_config_libobj_dir=. |
LIBOBJS= |
cross_compiling=no |
subdirs= |
MFLAGS= |
MAKEFLAGS= |
SHELL=${CONFIG_SHELL-/bin/sh} |
|
# Identity of this package. |
PACKAGE_NAME= |
PACKAGE_TARNAME= |
PACKAGE_VERSION= |
PACKAGE_STRING= |
PACKAGE_BUGREPORT= |
|
ac_unique_file="crt0.S" |
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 |
datarootdir |
datadir |
sysconfdir |
sharedstatedir |
localstatedir |
includedir |
oldincludedir |
docdir |
infodir |
htmldir |
dvidir |
pdfdir |
psdir |
libdir |
localedir |
mandir |
DEFS |
ECHO_C |
ECHO_N |
ECHO_T |
LIBS |
build_alias |
host_alias |
target_alias |
build |
build_cpu |
build_vendor |
build_os |
host |
host_cpu |
host_vendor |
host_os |
target |
target_cpu |
target_vendor |
target_os |
INSTALL_PROGRAM |
INSTALL_SCRIPT |
INSTALL_DATA |
CC |
am__leading_dot |
DEPDIR |
am__include |
am__quote |
AMDEP_TRUE |
AMDEP_FALSE |
AMDEPBACKSLASH |
CCDEPMODE |
am__fastdepCC_TRUE |
am__fastdepCC_FALSE |
AS |
AR |
LD |
RANLIB |
CCAS |
CCASFLAGS |
host_makefile_frag_path |
target_makefile_frag_path |
part_specific_obj |
part_specific_defines |
script_list |
bsp_list |
crt0 |
pcrt0 |
LIBOBJS |
LTLIBOBJS' |
ac_subst_files='host_makefile_frag |
target_makefile_frag' |
ac_precious_vars='build_alias |
host_alias |
target_alias |
CCAS |
CCASFLAGS' |
|
|
# Initialize some variables set by options. |
ac_init_help= |
ac_init_version=false |
# The variables have the same names as the options, with |
# dashes changed to underlines. |
cache_file=/dev/null |
exec_prefix=NONE |
no_create= |
no_recursion= |
prefix=NONE |
program_prefix=NONE |
program_suffix=NONE |
program_transform_name=s,x,x, |
silent= |
site= |
srcdir= |
verbose= |
x_includes=NONE |
x_libraries=NONE |
|
# Installation directory options. |
# These are left unexpanded so users can "make install exec_prefix=/foo" |
# and all the variables that are supposed to be based on exec_prefix |
# by default will actually change. |
# Use braces instead of parens because sh, perl, etc. also accept them. |
# (The list follows the same order as the GNU Coding Standards.) |
bindir='${exec_prefix}/bin' |
sbindir='${exec_prefix}/sbin' |
libexecdir='${exec_prefix}/libexec' |
datarootdir='${prefix}/share' |
datadir='${datarootdir}' |
sysconfdir='${prefix}/etc' |
sharedstatedir='${prefix}/com' |
localstatedir='${prefix}/var' |
includedir='${prefix}/include' |
oldincludedir='/usr/include' |
docdir='${datarootdir}/doc/${PACKAGE}' |
infodir='${datarootdir}/info' |
htmldir='${docdir}' |
dvidir='${docdir}' |
pdfdir='${docdir}' |
psdir='${docdir}' |
libdir='${exec_prefix}/lib' |
localedir='${datarootdir}/locale' |
mandir='${datarootdir}/man' |
|
ac_prev= |
ac_dashdash= |
for ac_option |
do |
# If the previous option needs an argument, assign it. |
if test -n "$ac_prev"; then |
eval $ac_prev=\$ac_option |
ac_prev= |
continue |
fi |
|
case $ac_option in |
*=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; |
*) ac_optarg=yes ;; |
esac |
|
# Accept the important Cygnus configure options, so we can diagnose typos. |
|
case $ac_dashdash$ac_option in |
--) |
ac_dashdash=yes ;; |
|
-bindir | --bindir | --bindi | --bind | --bin | --bi) |
ac_prev=bindir ;; |
-bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) |
bindir=$ac_optarg ;; |
|
-build | --build | --buil | --bui | --bu) |
ac_prev=build_alias ;; |
-build=* | --build=* | --buil=* | --bui=* | --bu=*) |
build_alias=$ac_optarg ;; |
|
-cache-file | --cache-file | --cache-fil | --cache-fi \ |
| --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) |
ac_prev=cache_file ;; |
-cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ |
| --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) |
cache_file=$ac_optarg ;; |
|
--config-cache | -C) |
cache_file=config.cache ;; |
|
-datadir | --datadir | --datadi | --datad) |
ac_prev=datadir ;; |
-datadir=* | --datadir=* | --datadi=* | --datad=*) |
datadir=$ac_optarg ;; |
|
-datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ |
| --dataroo | --dataro | --datar) |
ac_prev=datarootdir ;; |
-datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ |
| --dataroot=* | --dataroo=* | --dataro=* | --datar=*) |
datarootdir=$ac_optarg ;; |
|
-disable-* | --disable-*) |
ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` |
# Reject names that are not valid shell variable names. |
expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && |
{ echo "$as_me: error: invalid feature name: $ac_feature" >&2 |
{ (exit 1); exit 1; }; } |
ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` |
eval enable_$ac_feature=no ;; |
|
-docdir | --docdir | --docdi | --doc | --do) |
ac_prev=docdir ;; |
-docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) |
docdir=$ac_optarg ;; |
|
-dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) |
ac_prev=dvidir ;; |
-dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) |
dvidir=$ac_optarg ;; |
|
-enable-* | --enable-*) |
ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` |
# Reject names that are not valid shell variable names. |
expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && |
{ echo "$as_me: error: invalid feature name: $ac_feature" >&2 |
{ (exit 1); exit 1; }; } |
ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` |
eval enable_$ac_feature=\$ac_optarg ;; |
|
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ |
| --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ |
| --exec | --exe | --ex) |
ac_prev=exec_prefix ;; |
-exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ |
| --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ |
| --exec=* | --exe=* | --ex=*) |
exec_prefix=$ac_optarg ;; |
|
-gas | --gas | --ga | --g) |
# Obsolete; use --with-gas. |
with_gas=yes ;; |
|
-help | --help | --hel | --he | -h) |
ac_init_help=long ;; |
-help=r* | --help=r* | --hel=r* | --he=r* | -hr*) |
ac_init_help=recursive ;; |
-help=s* | --help=s* | --hel=s* | --he=s* | -hs*) |
ac_init_help=short ;; |
|
-host | --host | --hos | --ho) |
ac_prev=host_alias ;; |
-host=* | --host=* | --hos=* | --ho=*) |
host_alias=$ac_optarg ;; |
|
-htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) |
ac_prev=htmldir ;; |
-htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ |
| --ht=*) |
htmldir=$ac_optarg ;; |
|
-includedir | --includedir | --includedi | --included | --include \ |
| --includ | --inclu | --incl | --inc) |
ac_prev=includedir ;; |
-includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ |
| --includ=* | --inclu=* | --incl=* | --inc=*) |
includedir=$ac_optarg ;; |
|
-infodir | --infodir | --infodi | --infod | --info | --inf) |
ac_prev=infodir ;; |
-infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) |
infodir=$ac_optarg ;; |
|
-libdir | --libdir | --libdi | --libd) |
ac_prev=libdir ;; |
-libdir=* | --libdir=* | --libdi=* | --libd=*) |
libdir=$ac_optarg ;; |
|
-libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ |
| --libexe | --libex | --libe) |
ac_prev=libexecdir ;; |
-libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ |
| --libexe=* | --libex=* | --libe=*) |
libexecdir=$ac_optarg ;; |
|
-localedir | --localedir | --localedi | --localed | --locale) |
ac_prev=localedir ;; |
-localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) |
localedir=$ac_optarg ;; |
|
-localstatedir | --localstatedir | --localstatedi | --localstated \ |
| --localstate | --localstat | --localsta | --localst | --locals) |
ac_prev=localstatedir ;; |
-localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ |
| --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) |
localstatedir=$ac_optarg ;; |
|
-mandir | --mandir | --mandi | --mand | --man | --ma | --m) |
ac_prev=mandir ;; |
-mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) |
mandir=$ac_optarg ;; |
|
-nfp | --nfp | --nf) |
# Obsolete; use --without-fp. |
with_fp=no ;; |
|
-no-create | --no-create | --no-creat | --no-crea | --no-cre \ |
| --no-cr | --no-c | -n) |
no_create=yes ;; |
|
-no-recursion | --no-recursion | --no-recursio | --no-recursi \ |
| --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) |
no_recursion=yes ;; |
|
-oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ |
| --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ |
| --oldin | --oldi | --old | --ol | --o) |
ac_prev=oldincludedir ;; |
-oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ |
| --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ |
| --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) |
oldincludedir=$ac_optarg ;; |
|
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p) |
ac_prev=prefix ;; |
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) |
prefix=$ac_optarg ;; |
|
-program-prefix | --program-prefix | --program-prefi | --program-pref \ |
| --program-pre | --program-pr | --program-p) |
ac_prev=program_prefix ;; |
-program-prefix=* | --program-prefix=* | --program-prefi=* \ |
| --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) |
program_prefix=$ac_optarg ;; |
|
-program-suffix | --program-suffix | --program-suffi | --program-suff \ |
| --program-suf | --program-su | --program-s) |
ac_prev=program_suffix ;; |
-program-suffix=* | --program-suffix=* | --program-suffi=* \ |
| --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) |
program_suffix=$ac_optarg ;; |
|
-program-transform-name | --program-transform-name \ |
| --program-transform-nam | --program-transform-na \ |
| --program-transform-n | --program-transform- \ |
| --program-transform | --program-transfor \ |
| --program-transfo | --program-transf \ |
| --program-trans | --program-tran \ |
| --progr-tra | --program-tr | --program-t) |
ac_prev=program_transform_name ;; |
-program-transform-name=* | --program-transform-name=* \ |
| --program-transform-nam=* | --program-transform-na=* \ |
| --program-transform-n=* | --program-transform-=* \ |
| --program-transform=* | --program-transfor=* \ |
| --program-transfo=* | --program-transf=* \ |
| --program-trans=* | --program-tran=* \ |
| --progr-tra=* | --program-tr=* | --program-t=*) |
program_transform_name=$ac_optarg ;; |
|
-pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) |
ac_prev=pdfdir ;; |
-pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) |
pdfdir=$ac_optarg ;; |
|
-psdir | --psdir | --psdi | --psd | --ps) |
ac_prev=psdir ;; |
-psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) |
psdir=$ac_optarg ;; |
|
-q | -quiet | --quiet | --quie | --qui | --qu | --q \ |
| -silent | --silent | --silen | --sile | --sil) |
silent=yes ;; |
|
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) |
ac_prev=sbindir ;; |
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ |
| --sbi=* | --sb=*) |
sbindir=$ac_optarg ;; |
|
-sharedstatedir | --sharedstatedir | --sharedstatedi \ |
| --sharedstated | --sharedstate | --sharedstat | --sharedsta \ |
| --sharedst | --shareds | --shared | --share | --shar \ |
| --sha | --sh) |
ac_prev=sharedstatedir ;; |
-sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ |
| --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ |
| --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ |
| --sha=* | --sh=*) |
sharedstatedir=$ac_optarg ;; |
|
-site | --site | --sit) |
ac_prev=site ;; |
-site=* | --site=* | --sit=*) |
site=$ac_optarg ;; |
|
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr) |
ac_prev=srcdir ;; |
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) |
srcdir=$ac_optarg ;; |
|
-sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ |
| --syscon | --sysco | --sysc | --sys | --sy) |
ac_prev=sysconfdir ;; |
-sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ |
| --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) |
sysconfdir=$ac_optarg ;; |
|
-target | --target | --targe | --targ | --tar | --ta | --t) |
ac_prev=target_alias ;; |
-target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) |
target_alias=$ac_optarg ;; |
|
-v | -verbose | --verbose | --verbos | --verbo | --verb) |
verbose=yes ;; |
|
-version | --version | --versio | --versi | --vers | -V) |
ac_init_version=: ;; |
|
-with-* | --with-*) |
ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` |
# Reject names that are not valid shell variable names. |
expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && |
{ echo "$as_me: error: invalid package name: $ac_package" >&2 |
{ (exit 1); exit 1; }; } |
ac_package=`echo $ac_package | sed 's/[-.]/_/g'` |
eval with_$ac_package=\$ac_optarg ;; |
|
-without-* | --without-*) |
ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` |
# Reject names that are not valid shell variable names. |
expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && |
{ echo "$as_me: error: invalid package name: $ac_package" >&2 |
{ (exit 1); exit 1; }; } |
ac_package=`echo $ac_package | sed 's/[-.]/_/g'` |
eval with_$ac_package=no ;; |
|
--x) |
# Obsolete; use --with-x. |
with_x=yes ;; |
|
-x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ |
| --x-incl | --x-inc | --x-in | --x-i) |
ac_prev=x_includes ;; |
-x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ |
| --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) |
x_includes=$ac_optarg ;; |
|
-x-libraries | --x-libraries | --x-librarie | --x-librari \ |
| --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) |
ac_prev=x_libraries ;; |
-x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ |
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) |
x_libraries=$ac_optarg ;; |
|
-*) { echo "$as_me: error: unrecognized option: $ac_option |
Try \`$0 --help' for more information." >&2 |
{ (exit 1); exit 1; }; } |
;; |
|
*=*) |
ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` |
# Reject names that are not valid shell variable names. |
expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && |
{ echo "$as_me: error: invalid variable name: $ac_envvar" >&2 |
{ (exit 1); exit 1; }; } |
eval $ac_envvar=\$ac_optarg |
export $ac_envvar ;; |
|
*) |
# FIXME: should be removed in autoconf 3.0. |
echo "$as_me: WARNING: you should use --build, --host, --target" >&2 |
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && |
echo "$as_me: WARNING: invalid host type: $ac_option" >&2 |
: ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} |
;; |
|
esac |
done |
|
if test -n "$ac_prev"; then |
ac_option=--`echo $ac_prev | sed 's/_/-/g'` |
{ echo "$as_me: error: missing argument to $ac_option" >&2 |
{ (exit 1); exit 1; }; } |
fi |
|
# Be sure to have absolute directory names. |
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ |
datadir sysconfdir sharedstatedir localstatedir includedir \ |
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ |
libdir localedir mandir |
do |
eval ac_val=\$$ac_var |
case $ac_val in |
[\\/$]* | ?:[\\/]* ) continue;; |
NONE | '' ) case $ac_var in *prefix ) continue;; esac;; |
esac |
{ echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 |
{ (exit 1); exit 1; }; } |
done |
|
# There might be people who depend on the old broken behavior: `$host' |
# used to hold the argument of --host etc. |
# FIXME: To remove some day. |
build=$build_alias |
host=$host_alias |
target=$target_alias |
|
# FIXME: To remove some day. |
if test "x$host_alias" != x; then |
if test "x$build_alias" = x; then |
cross_compiling=maybe |
echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. |
If a cross compiler is detected then cross compile mode will be used." >&2 |
elif test "x$build_alias" != "x$host_alias"; then |
cross_compiling=yes |
fi |
fi |
|
ac_tool_prefix= |
test -n "$host_alias" && ac_tool_prefix=$host_alias- |
|
test "$silent" = yes && exec 6>/dev/null |
|
|
ac_pwd=`pwd` && test -n "$ac_pwd" && |
ac_ls_di=`ls -di .` && |
ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || |
{ echo "$as_me: error: Working directory cannot be determined" >&2 |
{ (exit 1); exit 1; }; } |
test "X$ac_ls_di" = "X$ac_pwd_ls_di" || |
{ echo "$as_me: error: pwd does not report name of working directory" >&2 |
{ (exit 1); exit 1; }; } |
|
|
# Find the source files, if location was not specified. |
if test -z "$srcdir"; then |
ac_srcdir_defaulted=yes |
# Try the directory containing this script, then the parent directory. |
ac_confdir=`$as_dirname -- "$0" || |
$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ |
X"$0" : 'X\(//\)[^/]' \| \ |
X"$0" : 'X\(//\)$' \| \ |
X"$0" : 'X\(/\)' \| . 2>/dev/null || |
echo X"$0" | |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)[^/].*/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)$/{ |
s//\1/ |
q |
} |
/^X\(\/\).*/{ |
s//\1/ |
q |
} |
s/.*/./; q'` |
srcdir=$ac_confdir |
if test ! -r "$srcdir/$ac_unique_file"; then |
srcdir=.. |
fi |
else |
ac_srcdir_defaulted=no |
fi |
if test ! -r "$srcdir/$ac_unique_file"; then |
test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." |
{ echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 |
{ (exit 1); exit 1; }; } |
fi |
ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" |
ac_abs_confdir=`( |
cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 |
{ (exit 1); exit 1; }; } |
pwd)` |
# When building in place, set srcdir=. |
if test "$ac_abs_confdir" = "$ac_pwd"; then |
srcdir=. |
fi |
# Remove unnecessary trailing slashes from srcdir. |
# Double slashes in file names in object file debugging info |
# mess up M-x gdb in Emacs. |
case $srcdir in |
*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; |
esac |
for ac_var in $ac_precious_vars; do |
eval ac_env_${ac_var}_set=\${${ac_var}+set} |
eval ac_env_${ac_var}_value=\$${ac_var} |
eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} |
eval ac_cv_env_${ac_var}_value=\$${ac_var} |
done |
|
# |
# Report the --help message. |
# |
if test "$ac_init_help" = "long"; then |
# Omit some internal or obsolete options to make the list less imposing. |
# This message is too long to be a string in the A/UX 3.1 sh. |
cat <<_ACEOF |
\`configure' configures this package to adapt to many kinds of systems. |
|
Usage: $0 [OPTION]... [VAR=VALUE]... |
|
To assign environment variables (e.g., CC, CFLAGS...), specify them as |
VAR=VALUE. See below for descriptions of some of the useful variables. |
|
Defaults for the options are specified in brackets. |
|
Configuration: |
-h, --help display this help and exit |
--help=short display options specific to this package |
--help=recursive display the short help of all the included packages |
-V, --version display version information and exit |
-q, --quiet, --silent do not print \`checking...' messages |
--cache-file=FILE cache test results in FILE [disabled] |
-C, --config-cache alias for \`--cache-file=config.cache' |
-n, --no-create do not create output files |
--srcdir=DIR find the sources in DIR [configure dir or \`..'] |
|
Installation directories: |
--prefix=PREFIX install architecture-independent files in PREFIX |
[$ac_default_prefix] |
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX |
[PREFIX] |
|
By default, \`make install' will install all the files in |
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify |
an installation prefix other than \`$ac_default_prefix' using \`--prefix', |
for instance \`--prefix=\$HOME'. |
|
For better control, use the options below. |
|
Fine tuning of the installation directories: |
--bindir=DIR user executables [EPREFIX/bin] |
--sbindir=DIR system admin executables [EPREFIX/sbin] |
--libexecdir=DIR program executables [EPREFIX/libexec] |
--sysconfdir=DIR read-only single-machine data [PREFIX/etc] |
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] |
--localstatedir=DIR modifiable single-machine data [PREFIX/var] |
--libdir=DIR object code libraries [EPREFIX/lib] |
--includedir=DIR C header files [PREFIX/include] |
--oldincludedir=DIR C header files for non-gcc [/usr/include] |
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share] |
--datadir=DIR read-only architecture-independent data [DATAROOTDIR] |
--infodir=DIR info documentation [DATAROOTDIR/info] |
--localedir=DIR locale-dependent data [DATAROOTDIR/locale] |
--mandir=DIR man documentation [DATAROOTDIR/man] |
--docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] |
--htmldir=DIR html documentation [DOCDIR] |
--dvidir=DIR dvi documentation [DOCDIR] |
--pdfdir=DIR pdf documentation [DOCDIR] |
--psdir=DIR ps documentation [DOCDIR] |
_ACEOF |
|
cat <<\_ACEOF |
|
Program names: |
--program-prefix=PREFIX prepend PREFIX to installed program names |
--program-suffix=SUFFIX append SUFFIX to installed program names |
--program-transform-name=PROGRAM run sed PROGRAM on installed program names |
|
System types: |
--build=BUILD configure for building on BUILD [guessed] |
--host=HOST cross-compile to build programs to run on HOST [BUILD] |
--target=TARGET configure for building compilers for TARGET [HOST] |
_ACEOF |
fi |
|
if test -n "$ac_init_help"; then |
|
cat <<\_ACEOF |
|
Optional Features: |
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) |
--enable-FEATURE[=ARG] include FEATURE [ARG=yes] |
--disable-dependency-tracking speeds up one-time build |
--enable-dependency-tracking do not reject slow dependency extractors |
|
Some influential environment variables: |
CCAS assembler compiler command (defaults to CC) |
CCASFLAGS assembler compiler flags (defaults to CFLAGS) |
|
Use these variables to override the choices made by `configure' or to help |
it to find libraries and programs with nonstandard names/locations. |
|
_ACEOF |
ac_status=$? |
fi |
|
if test "$ac_init_help" = "recursive"; then |
# If there are subdirs, report their specific --help. |
for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue |
test -d "$ac_dir" || continue |
ac_builddir=. |
|
case "$ac_dir" in |
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; |
*) |
ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` |
# A ".." for each directory in $ac_dir_suffix. |
ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` |
case $ac_top_builddir_sub in |
"") ac_top_builddir_sub=. ac_top_build_prefix= ;; |
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;; |
esac ;; |
esac |
ac_abs_top_builddir=$ac_pwd |
ac_abs_builddir=$ac_pwd$ac_dir_suffix |
# for backward compatibility: |
ac_top_builddir=$ac_top_build_prefix |
|
case $srcdir in |
.) # We are building in place. |
ac_srcdir=. |
ac_top_srcdir=$ac_top_builddir_sub |
ac_abs_top_srcdir=$ac_pwd ;; |
[\\/]* | ?:[\\/]* ) # Absolute name. |
ac_srcdir=$srcdir$ac_dir_suffix; |
ac_top_srcdir=$srcdir |
ac_abs_top_srcdir=$srcdir ;; |
*) # Relative name. |
ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix |
ac_top_srcdir=$ac_top_build_prefix$srcdir |
ac_abs_top_srcdir=$ac_pwd/$srcdir ;; |
esac |
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix |
|
cd "$ac_dir" || { ac_status=$?; continue; } |
# Check for guested configure. |
if test -f "$ac_srcdir/configure.gnu"; then |
echo && |
$SHELL "$ac_srcdir/configure.gnu" --help=recursive |
elif test -f "$ac_srcdir/configure"; then |
echo && |
$SHELL "$ac_srcdir/configure" --help=recursive |
else |
echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 |
fi || ac_status=$? |
cd "$ac_pwd" || { ac_status=$?; break; } |
done |
fi |
|
test -n "$ac_init_help" && exit $ac_status |
if $ac_init_version; then |
cat <<\_ACEOF |
configure |
generated by GNU Autoconf 2.61 |
|
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, |
2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. |
This configure script is free software; the Free Software Foundation |
gives unlimited permission to copy, distribute and modify it. |
_ACEOF |
exit |
fi |
cat >config.log <<_ACEOF |
This file contains any messages produced by compilers while |
running configure, to aid debugging if configure makes a mistake. |
|
It was created by $as_me, which was |
generated by GNU Autoconf 2.61. Invocation command line was |
|
$ $0 $@ |
|
_ACEOF |
exec 5>>config.log |
{ |
cat <<_ASUNAME |
## --------- ## |
## Platform. ## |
## --------- ## |
|
hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` |
uname -m = `(uname -m) 2>/dev/null || echo unknown` |
uname -r = `(uname -r) 2>/dev/null || echo unknown` |
uname -s = `(uname -s) 2>/dev/null || echo unknown` |
uname -v = `(uname -v) 2>/dev/null || echo unknown` |
|
/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` |
/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` |
|
/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` |
/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` |
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` |
/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` |
/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` |
/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` |
/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` |
|
_ASUNAME |
|
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
echo "PATH: $as_dir" |
done |
IFS=$as_save_IFS |
|
} >&5 |
|
cat >&5 <<_ACEOF |
|
|
## ----------- ## |
## Core tests. ## |
## ----------- ## |
|
_ACEOF |
|
|
# Keep a trace of the command line. |
# Strip out --no-create and --no-recursion so they do not pile up. |
# Strip out --silent because we don't want to record it for future runs. |
# Also quote any args containing shell meta-characters. |
# Make two passes to allow for proper duplicate-argument suppression. |
ac_configure_args= |
ac_configure_args0= |
ac_configure_args1= |
ac_must_keep_next=false |
for ac_pass in 1 2 |
do |
for ac_arg |
do |
case $ac_arg in |
-no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; |
-q | -quiet | --quiet | --quie | --qui | --qu | --q \ |
| -silent | --silent | --silen | --sile | --sil) |
continue ;; |
*\'*) |
ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; |
esac |
case $ac_pass in |
1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; |
2) |
ac_configure_args1="$ac_configure_args1 '$ac_arg'" |
if test $ac_must_keep_next = true; then |
ac_must_keep_next=false # Got value, back to normal. |
else |
case $ac_arg in |
*=* | --config-cache | -C | -disable-* | --disable-* \ |
| -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ |
| -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ |
| -with-* | --with-* | -without-* | --without-* | --x) |
case "$ac_configure_args0 " in |
"$ac_configure_args1"*" '$ac_arg' "* ) continue ;; |
esac |
;; |
-* ) ac_must_keep_next=true ;; |
esac |
fi |
ac_configure_args="$ac_configure_args '$ac_arg'" |
;; |
esac |
done |
done |
$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } |
$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } |
|
# When interrupted or exit'd, cleanup temporary files, and complete |
# config.log. We remove comments because anyway the quotes in there |
# would cause problems or look ugly. |
# WARNING: Use '\'' to represent an apostrophe within the trap. |
# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. |
trap 'exit_status=$? |
# Save into config.log some information that might help in debugging. |
{ |
echo |
|
cat <<\_ASBOX |
## ---------------- ## |
## Cache variables. ## |
## ---------------- ## |
_ASBOX |
echo |
# The following way of writing the cache mishandles newlines in values, |
( |
for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do |
eval ac_val=\$$ac_var |
case $ac_val in #( |
*${as_nl}*) |
case $ac_var in #( |
*_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 |
echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; |
esac |
case $ac_var in #( |
_ | IFS | as_nl) ;; #( |
*) $as_unset $ac_var ;; |
esac ;; |
esac |
done |
(set) 2>&1 | |
case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( |
*${as_nl}ac_space=\ *) |
sed -n \ |
"s/'\''/'\''\\\\'\'''\''/g; |
s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" |
;; #( |
*) |
sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" |
;; |
esac | |
sort |
) |
echo |
|
cat <<\_ASBOX |
## ----------------- ## |
## Output variables. ## |
## ----------------- ## |
_ASBOX |
echo |
for ac_var in $ac_subst_vars |
do |
eval ac_val=\$$ac_var |
case $ac_val in |
*\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; |
esac |
echo "$ac_var='\''$ac_val'\''" |
done | sort |
echo |
|
if test -n "$ac_subst_files"; then |
cat <<\_ASBOX |
## ------------------- ## |
## File substitutions. ## |
## ------------------- ## |
_ASBOX |
echo |
for ac_var in $ac_subst_files |
do |
eval ac_val=\$$ac_var |
case $ac_val in |
*\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; |
esac |
echo "$ac_var='\''$ac_val'\''" |
done | sort |
echo |
fi |
|
if test -s confdefs.h; then |
cat <<\_ASBOX |
## ----------- ## |
## confdefs.h. ## |
## ----------- ## |
_ASBOX |
echo |
cat confdefs.h |
echo |
fi |
test "$ac_signal" != 0 && |
echo "$as_me: caught signal $ac_signal" |
echo "$as_me: exit $exit_status" |
} >&5 |
rm -f core *.core core.conftest.* && |
rm -f -r conftest* confdefs* conf$$* $ac_clean_files && |
exit $exit_status |
' 0 |
for ac_signal in 1 2 13 15; do |
trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal |
done |
ac_signal=0 |
|
# confdefs.h avoids OS command line length limits that DEFS can exceed. |
rm -f -r conftest* confdefs.h |
|
# Predefined preprocessor variables. |
|
cat >>confdefs.h <<_ACEOF |
#define PACKAGE_NAME "$PACKAGE_NAME" |
_ACEOF |
|
|
cat >>confdefs.h <<_ACEOF |
#define PACKAGE_TARNAME "$PACKAGE_TARNAME" |
_ACEOF |
|
|
cat >>confdefs.h <<_ACEOF |
#define PACKAGE_VERSION "$PACKAGE_VERSION" |
_ACEOF |
|
|
cat >>confdefs.h <<_ACEOF |
#define PACKAGE_STRING "$PACKAGE_STRING" |
_ACEOF |
|
|
cat >>confdefs.h <<_ACEOF |
#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" |
_ACEOF |
|
|
# Let the site file select an alternate cache file if it wants to. |
# Prefer explicitly selected file to automatically selected ones. |
if test -n "$CONFIG_SITE"; then |
set x "$CONFIG_SITE" |
elif test "x$prefix" != xNONE; then |
set x "$prefix/share/config.site" "$prefix/etc/config.site" |
else |
set x "$ac_default_prefix/share/config.site" \ |
"$ac_default_prefix/etc/config.site" |
fi |
shift |
for ac_site_file |
do |
if test -r "$ac_site_file"; then |
{ echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 |
echo "$as_me: loading site script $ac_site_file" >&6;} |
sed 's/^/| /' "$ac_site_file" >&5 |
. "$ac_site_file" |
fi |
done |
|
if test -r "$cache_file"; then |
# Some versions of bash will fail to source /dev/null (special |
# files actually), so we avoid doing that. |
if test -f "$cache_file"; then |
{ echo "$as_me:$LINENO: loading cache $cache_file" >&5 |
echo "$as_me: loading cache $cache_file" >&6;} |
case $cache_file in |
[\\/]* | ?:[\\/]* ) . "$cache_file";; |
*) . "./$cache_file";; |
esac |
fi |
else |
{ echo "$as_me:$LINENO: creating cache $cache_file" >&5 |
echo "$as_me: creating cache $cache_file" >&6;} |
>$cache_file |
fi |
|
# Check that the precious variables saved in the cache have kept the same |
# value. |
ac_cache_corrupted=false |
for ac_var in $ac_precious_vars; do |
eval ac_old_set=\$ac_cv_env_${ac_var}_set |
eval ac_new_set=\$ac_env_${ac_var}_set |
eval ac_old_val=\$ac_cv_env_${ac_var}_value |
eval ac_new_val=\$ac_env_${ac_var}_value |
case $ac_old_set,$ac_new_set in |
set,) |
{ echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 |
echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} |
ac_cache_corrupted=: ;; |
,set) |
{ echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 |
echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} |
ac_cache_corrupted=: ;; |
,);; |
*) |
if test "x$ac_old_val" != "x$ac_new_val"; then |
{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 |
echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} |
{ echo "$as_me:$LINENO: former value: $ac_old_val" >&5 |
echo "$as_me: former value: $ac_old_val" >&2;} |
{ echo "$as_me:$LINENO: current value: $ac_new_val" >&5 |
echo "$as_me: current value: $ac_new_val" >&2;} |
ac_cache_corrupted=: |
fi;; |
esac |
# Pass precious variables to config.status. |
if test "$ac_new_set" = set; then |
case $ac_new_val in |
*\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; |
*) ac_arg=$ac_var=$ac_new_val ;; |
esac |
case " $ac_configure_args " in |
*" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. |
*) ac_configure_args="$ac_configure_args '$ac_arg'" ;; |
esac |
fi |
done |
if $ac_cache_corrupted; then |
{ echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 |
echo "$as_me: error: changes in the environment can compromise the build" >&2;} |
{ { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 |
echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} |
{ (exit 1); exit 1; }; } |
fi |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ac_ext=c |
ac_cpp='$CPP $CPPFLAGS' |
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
ac_compiler_gnu=$ac_cv_c_compiler_gnu |
|
|
|
if test "${enable_shared}" = "yes" ; then |
echo "Shared libraries not supported for cross compiling, ignored" |
fi |
|
if test "$srcdir" = "." ; then |
if test "${with_target_subdir}" != "." ; then |
libgloss_topdir="${srcdir}/${with_multisrctop}../../.." |
else |
libgloss_topdir="${srcdir}/${with_multisrctop}../.." |
fi |
else |
libgloss_topdir="${srcdir}/../.." |
fi |
ac_aux_dir= |
for ac_dir in $libgloss_topdir "$srcdir"/$libgloss_topdir; do |
if test -f "$ac_dir/install-sh"; then |
ac_aux_dir=$ac_dir |
ac_install_sh="$ac_aux_dir/install-sh -c" |
break |
elif test -f "$ac_dir/install.sh"; then |
ac_aux_dir=$ac_dir |
ac_install_sh="$ac_aux_dir/install.sh -c" |
break |
elif test -f "$ac_dir/shtool"; then |
ac_aux_dir=$ac_dir |
ac_install_sh="$ac_aux_dir/shtool install -c" |
break |
fi |
done |
if test -z "$ac_aux_dir"; then |
{ { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $libgloss_topdir \"$srcdir\"/$libgloss_topdir" >&5 |
echo "$as_me: error: cannot find install-sh or install.sh in $libgloss_topdir \"$srcdir\"/$libgloss_topdir" >&2;} |
{ (exit 1); exit 1; }; } |
fi |
|
# These three variables are undocumented and unsupported, |
# and are intended to be withdrawn in a future Autoconf release. |
# They can cause serious problems if a builder's source tree is in a directory |
# whose full name contains unusual characters. |
ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. |
ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. |
ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. |
|
|
|
# Make sure we can run config.sub. |
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || |
{ { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 |
echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} |
{ (exit 1); exit 1; }; } |
|
{ echo "$as_me:$LINENO: checking build system type" >&5 |
echo $ECHO_N "checking build system type... $ECHO_C" >&6; } |
if test "${ac_cv_build+set}" = set; then |
echo $ECHO_N "(cached) $ECHO_C" >&6 |
else |
ac_build_alias=$build_alias |
test "x$ac_build_alias" = x && |
ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` |
test "x$ac_build_alias" = x && |
{ { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 |
echo "$as_me: error: cannot guess build type; you must specify one" >&2;} |
{ (exit 1); exit 1; }; } |
ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || |
{ { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 |
echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} |
{ (exit 1); exit 1; }; } |
|
fi |
{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 |
echo "${ECHO_T}$ac_cv_build" >&6; } |
case $ac_cv_build in |
*-*-*) ;; |
*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 |
echo "$as_me: error: invalid value of canonical build" >&2;} |
{ (exit 1); exit 1; }; };; |
esac |
build=$ac_cv_build |
ac_save_IFS=$IFS; IFS='-' |
set x $ac_cv_build |
shift |
build_cpu=$1 |
build_vendor=$2 |
shift; shift |
# Remember, the first character of IFS is used to create $*, |
# except with old shells: |
build_os=$* |
IFS=$ac_save_IFS |
case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac |
|
|
{ echo "$as_me:$LINENO: checking host system type" >&5 |
echo $ECHO_N "checking host system type... $ECHO_C" >&6; } |
if test "${ac_cv_host+set}" = set; then |
echo $ECHO_N "(cached) $ECHO_C" >&6 |
else |
if test "x$host_alias" = x; then |
ac_cv_host=$ac_cv_build |
else |
ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || |
{ { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 |
echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} |
{ (exit 1); exit 1; }; } |
fi |
|
fi |
{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 |
echo "${ECHO_T}$ac_cv_host" >&6; } |
case $ac_cv_host in |
*-*-*) ;; |
*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 |
echo "$as_me: error: invalid value of canonical host" >&2;} |
{ (exit 1); exit 1; }; };; |
esac |
host=$ac_cv_host |
ac_save_IFS=$IFS; IFS='-' |
set x $ac_cv_host |
shift |
host_cpu=$1 |
host_vendor=$2 |
shift; shift |
# Remember, the first character of IFS is used to create $*, |
# except with old shells: |
host_os=$* |
IFS=$ac_save_IFS |
case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac |
|
|
{ echo "$as_me:$LINENO: checking target system type" >&5 |
echo $ECHO_N "checking target system type... $ECHO_C" >&6; } |
if test "${ac_cv_target+set}" = set; then |
echo $ECHO_N "(cached) $ECHO_C" >&6 |
else |
if test "x$target_alias" = x; then |
ac_cv_target=$ac_cv_host |
else |
ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || |
{ { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 |
echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} |
{ (exit 1); exit 1; }; } |
fi |
|
fi |
{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5 |
echo "${ECHO_T}$ac_cv_target" >&6; } |
case $ac_cv_target in |
*-*-*) ;; |
*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 |
echo "$as_me: error: invalid value of canonical target" >&2;} |
{ (exit 1); exit 1; }; };; |
esac |
target=$ac_cv_target |
ac_save_IFS=$IFS; IFS='-' |
set x $ac_cv_target |
shift |
target_cpu=$1 |
target_vendor=$2 |
shift; shift |
# Remember, the first character of IFS is used to create $*, |
# except with old shells: |
target_os=$* |
IFS=$ac_save_IFS |
case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac |
|
|
# The aliases save the names the user supplied, while $host etc. |
# will get canonicalized. |
test -n "$target_alias" && |
test "$program_prefix$program_suffix$program_transform_name" = \ |
NONENONEs,x,x, && |
program_prefix=${target_alias}- |
test "$program_prefix" != NONE && |
program_transform_name="s&^&$program_prefix&;$program_transform_name" |
# Use a double $ so make ignores it. |
test "$program_suffix" != NONE && |
program_transform_name="s&\$&$program_suffix&;$program_transform_name" |
# Double any \ or $. echo might interpret backslashes. |
# By default was `s,x,x', remove it if useless. |
cat <<\_ACEOF >conftest.sed |
s/[\\$]/&&/g;s/;s,x,x,$// |
_ACEOF |
program_transform_name=`echo $program_transform_name | sed -f conftest.sed` |
rm -f conftest.sed |
|
|
# Find a good install program. We prefer a C program (faster), |
# so one script is as good as another. But avoid the broken or |
# incompatible versions: |
# SysV /etc/install, /usr/sbin/install |
# SunOS /usr/etc/install |
# IRIX /sbin/install |
# AIX /bin/install |
# AmigaOS /C/install, which installs bootblocks on floppy discs |
# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag |
# AFS /usr/afsws/bin/install, which mishandles nonexistent args |
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" |
# OS/2's system install, which has a completely different semantic |
# ./install, which can be erroneously created by make from ./install.sh. |
{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 |
echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } |
if test -z "$INSTALL"; then |
if test "${ac_cv_path_install+set}" = set; then |
echo $ECHO_N "(cached) $ECHO_C" >&6 |
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
# Account for people who put trailing slashes in PATH elements. |
case $as_dir/ in |
./ | .// | /cC/* | \ |
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ |
?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ |
/usr/ucb/* ) ;; |
*) |
# OSF1 and SCO ODT 3.0 have their own names for install. |
# Don't use installbsd from OSF since it installs stuff as root |
# by default. |
for ac_prog in ginstall scoinst install; do |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then |
if test $ac_prog = install && |
grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then |
# AIX install. It has an incompatible calling convention. |
: |
elif test $ac_prog = install && |
grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then |
# program-specific install script used by HP pwplus--don't use. |
: |
else |
ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" |
break 3 |
fi |
fi |
done |
done |
;; |
esac |
done |
IFS=$as_save_IFS |
|
|
fi |
if test "${ac_cv_path_install+set}" = set; then |
INSTALL=$ac_cv_path_install |
else |
# As a last resort, use the slow shell script. Don't cache a |
# value for INSTALL within a source directory, because that will |
# break other packages using the cache if that directory is |
# removed, or if the value is a relative name. |
INSTALL=$ac_install_sh |
fi |
fi |
{ echo "$as_me:$LINENO: result: $INSTALL" >&5 |
echo "${ECHO_T}$INSTALL" >&6; } |
|
# Use test -z because SunOS4 sh mishandles braces in ${var-val}. |
# It thinks the first close brace ends the variable substitution. |
test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' |
|
test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' |
|
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' |
|
|
rm -rf .tst 2>/dev/null |
mkdir .tst 2>/dev/null |
if test -d .tst; then |
am__leading_dot=. |
else |
am__leading_dot=_ |
fi |
rmdir .tst 2>/dev/null |
|
DEPDIR="${am__leading_dot}deps" |
|
ac_config_commands="$ac_config_commands depfiles" |
|
|
am_make=${MAKE-make} |
cat > confinc << 'END' |
am__doit: |
@echo done |
.PHONY: am__doit |
END |
# If we don't find an include directive, just comment out the code. |
{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 |
echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } |
am__include="#" |
am__quote= |
_am_result=none |
# First try GNU make style include. |
echo "include confinc" > confmf |
# We grep out `Entering directory' and `Leaving directory' |
# messages which can occur if `w' ends up in MAKEFLAGS. |
# In particular we don't look at `^make:' because GNU make might |
# be invoked under some other name (usually "gmake"), in which |
# case it prints its new name instead of `make'. |
if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then |
am__include=include |
am__quote= |
_am_result=GNU |
fi |
# Now try BSD make style include. |
if test "$am__include" = "#"; then |
echo '.include "confinc"' > confmf |
if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then |
am__include=.include |
am__quote="\"" |
_am_result=BSD |
fi |
fi |
|
|
{ echo "$as_me:$LINENO: result: $_am_result" >&5 |
echo "${ECHO_T}$_am_result" >&6; } |
rm -f confinc confmf |
|
# Check whether --enable-dependency-tracking was given. |
if test "${enable_dependency_tracking+set}" = set; then |
enableval=$enable_dependency_tracking; |
fi |
|
if test "x$enable_dependency_tracking" != xno; then |
am_depcomp="$ac_aux_dir/depcomp" |
AMDEPBACKSLASH='\' |
fi |
|
|
if test "x$enable_dependency_tracking" != xno; then |
AMDEP_TRUE= |
AMDEP_FALSE='#' |
else |
AMDEP_TRUE='#' |
AMDEP_FALSE= |
fi |
|
|
|
# Extract the first word of "gcc", so it can be a program name with args. |
set dummy gcc; ac_word=$2 |
{ echo "$as_me:$LINENO: checking for $ac_word" >&5 |
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } |
if test "${ac_cv_prog_CC+set}" = set; then |
echo $ECHO_N "(cached) $ECHO_C" >&6 |
else |
if test -n "$CC"; then |
ac_cv_prog_CC="$CC" # Let the user override the test. |
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
ac_cv_prog_CC="gcc" |
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
fi |
fi |
CC=$ac_cv_prog_CC |
if test -n "$CC"; then |
{ echo "$as_me:$LINENO: result: $CC" >&5 |
echo "${ECHO_T}$CC" >&6; } |
else |
{ echo "$as_me:$LINENO: result: no" >&5 |
echo "${ECHO_T}no" >&6; } |
fi |
|
|
|
depcc="$CC" am_compiler_list= |
|
{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 |
echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } |
if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then |
echo $ECHO_N "(cached) $ECHO_C" >&6 |
else |
if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then |
# We make a subdir and do the tests there. Otherwise we can end up |
# making bogus files that we don't know about and never remove. For |
# instance it was reported that on HP-UX the gcc test will end up |
# making a dummy file named `D' -- because `-MD' means `put the output |
# in D'. |
mkdir conftest.dir |
# Copy depcomp to subdir because otherwise we won't find it if we're |
# using a relative directory. |
cp "$am_depcomp" conftest.dir |
cd conftest.dir |
# We will build objects and dependencies in a subdirectory because |
# it helps to detect inapplicable dependency modes. For instance |
# both Tru64's cc and ICC support -MD to output dependencies as a |
# side effect of compilation, but ICC will put the dependencies in |
# the current directory while Tru64 will put them in the object |
# directory. |
mkdir sub |
|
am_cv_CC_dependencies_compiler_type=none |
if test "$am_compiler_list" = ""; then |
am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` |
fi |
for depmode in $am_compiler_list; do |
# Setup a source with many dependencies, because some compilers |
# like to wrap large dependency lists on column 80 (with \), and |
# we should not choose a depcomp mode which is confused by this. |
# |
# We need to recreate these files for each test, as the compiler may |
# overwrite some of them when testing with obscure command lines. |
# This happens at least with the AIX C compiler. |
: > sub/conftest.c |
for i in 1 2 3 4 5 6; do |
echo '#include "conftst'$i'.h"' >> sub/conftest.c |
# Using `: > sub/conftst$i.h' creates only sub/conftst1.h with |
# Solaris 8's {/usr,}/bin/sh. |
touch sub/conftst$i.h |
done |
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf |
|
case $depmode in |
nosideeffect) |
# after this tag, mechanisms are not by side-effect, so they'll |
# only be used when explicitly requested |
if test "x$enable_dependency_tracking" = xyes; then |
continue |
else |
break |
fi |
;; |
none) break ;; |
esac |
# We check with `-c' and `-o' for the sake of the "dashmstdout" |
# mode. It turns out that the SunPro C++ compiler does not properly |
# handle `-M -o', and we need to detect this. |
if depmode=$depmode \ |
source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ |
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ |
$SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ |
>/dev/null 2>conftest.err && |
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && |
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && |
${MAKE-make} -s -f confmf > /dev/null 2>&1; then |
# icc doesn't choke on unknown options, it will just issue warnings |
# or remarks (even with -Werror). So we grep stderr for any message |
# that says an option was ignored or not supported. |
# When given -MP, icc 7.0 and 7.1 complain thusly: |
# icc: Command line warning: ignoring option '-M'; no argument required |
# The diagnosis changed in icc 8.0: |
# icc: Command line remark: option '-MP' not supported |
if (grep 'ignoring option' conftest.err || |
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else |
am_cv_CC_dependencies_compiler_type=$depmode |
break |
fi |
fi |
done |
|
cd .. |
rm -rf conftest.dir |
else |
am_cv_CC_dependencies_compiler_type=none |
fi |
|
fi |
{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 |
echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } |
CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type |
|
|
|
if |
test "x$enable_dependency_tracking" != xno \ |
&& test "$am_cv_CC_dependencies_compiler_type" = gcc3; then |
am__fastdepCC_TRUE= |
am__fastdepCC_FALSE='#' |
else |
am__fastdepCC_TRUE='#' |
am__fastdepCC_FALSE= |
fi |
|
|
if test -z "$CC"; then |
# Extract the first word of "cc", so it can be a program name with args. |
set dummy cc; ac_word=$2 |
{ echo "$as_me:$LINENO: checking for $ac_word" >&5 |
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } |
if test "${ac_cv_prog_CC+set}" = set; then |
echo $ECHO_N "(cached) $ECHO_C" >&6 |
else |
if test -n "$CC"; then |
ac_cv_prog_CC="$CC" # Let the user override the test. |
else |
ac_prog_rejected=no |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then |
ac_prog_rejected=yes |
continue |
fi |
ac_cv_prog_CC="cc" |
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
if test $ac_prog_rejected = yes; then |
# We found a bogon in the path, so make sure we never use it. |
set dummy $ac_cv_prog_CC |
shift |
if test $# != 0; then |
# We chose a different compiler from the bogus one. |
# However, it has the same basename, so the bogon will be chosen |
# first if we set CC to just the basename; use the full file name. |
shift |
ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" |
fi |
fi |
fi |
fi |
CC=$ac_cv_prog_CC |
if test -n "$CC"; then |
{ echo "$as_me:$LINENO: result: $CC" >&5 |
echo "${ECHO_T}$CC" >&6; } |
else |
{ echo "$as_me:$LINENO: result: no" >&5 |
echo "${ECHO_T}no" >&6; } |
fi |
|
|
test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable cc found in \$PATH" >&5 |
echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} |
{ (exit 1); exit 1; }; } |
fi |
|
{ echo "$as_me:$LINENO: checking whether we are using GNU C" >&5 |
echo $ECHO_N "checking whether we are using GNU C... $ECHO_C" >&6; } |
if test "${ac_cv_c_compiler_gnu+set}" = set; then |
echo $ECHO_N "(cached) $ECHO_C" >&6 |
else |
cat > conftest.c <<EOF |
#ifdef __GNUC__ |
yes; |
#endif |
EOF |
if { ac_try='${CC-cc} -E conftest.c' |
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
(eval $ac_try) 2>&5 |
ac_status=$? |
echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
(exit $ac_status); }; } | egrep yes >/dev/null 2>&1; then |
ac_cv_c_compiler_gnu=yes |
else |
ac_cv_c_compiler_gnu=no |
fi |
fi |
{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 |
echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } |
|
if test $ac_cv_c_compiler_gnu = yes; then |
GCC=yes |
ac_test_CFLAGS="${CFLAGS+set}" |
ac_save_CFLAGS="$CFLAGS" |
CFLAGS= |
ac_test_CFLAGS=${CFLAGS+set} |
ac_save_CFLAGS=$CFLAGS |
{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 |
echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } |
if test "${ac_cv_prog_cc_g+set}" = set; then |
echo $ECHO_N "(cached) $ECHO_C" >&6 |
else |
ac_save_c_werror_flag=$ac_c_werror_flag |
ac_c_werror_flag=yes |
ac_cv_prog_cc_g=no |
CFLAGS="-g" |
cat >conftest.$ac_ext <<_ACEOF |
/* confdefs.h. */ |
_ACEOF |
cat confdefs.h >>conftest.$ac_ext |
cat >>conftest.$ac_ext <<_ACEOF |
/* end confdefs.h. */ |
|
int |
main () |
{ |
|
; |
return 0; |
} |
_ACEOF |
rm -f conftest.$ac_objext |
if { (ac_try="$ac_compile" |
case "(($ac_try" in |
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; |
*) ac_try_echo=$ac_try;; |
esac |
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 |
(eval "$ac_compile") 2>conftest.er1 |
ac_status=$? |
grep -v '^ *+' conftest.er1 >conftest.err |
rm -f conftest.er1 |
cat conftest.err >&5 |
echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
(exit $ac_status); } && { |
test -z "$ac_c_werror_flag" || |
test ! -s conftest.err |
} && test -s conftest.$ac_objext; then |
ac_cv_prog_cc_g=yes |
else |
echo "$as_me: failed program was:" >&5 |
sed 's/^/| /' conftest.$ac_ext >&5 |
|
CFLAGS="" |
cat >conftest.$ac_ext <<_ACEOF |
/* confdefs.h. */ |
_ACEOF |
cat confdefs.h >>conftest.$ac_ext |
cat >>conftest.$ac_ext <<_ACEOF |
/* end confdefs.h. */ |
|
int |
main () |
{ |
|
; |
return 0; |
} |
_ACEOF |
rm -f conftest.$ac_objext |
if { (ac_try="$ac_compile" |
case "(($ac_try" in |
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; |
*) ac_try_echo=$ac_try;; |
esac |
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 |
(eval "$ac_compile") 2>conftest.er1 |
ac_status=$? |
grep -v '^ *+' conftest.er1 >conftest.err |
rm -f conftest.er1 |
cat conftest.err >&5 |
echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
(exit $ac_status); } && { |
test -z "$ac_c_werror_flag" || |
test ! -s conftest.err |
} && test -s conftest.$ac_objext; then |
: |
else |
echo "$as_me: failed program was:" >&5 |
sed 's/^/| /' conftest.$ac_ext >&5 |
|
ac_c_werror_flag=$ac_save_c_werror_flag |
CFLAGS="-g" |
cat >conftest.$ac_ext <<_ACEOF |
/* confdefs.h. */ |
_ACEOF |
cat confdefs.h >>conftest.$ac_ext |
cat >>conftest.$ac_ext <<_ACEOF |
/* end confdefs.h. */ |
|
int |
main () |
{ |
|
; |
return 0; |
} |
_ACEOF |
rm -f conftest.$ac_objext |
if { (ac_try="$ac_compile" |
case "(($ac_try" in |
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; |
*) ac_try_echo=$ac_try;; |
esac |
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 |
(eval "$ac_compile") 2>conftest.er1 |
ac_status=$? |
grep -v '^ *+' conftest.er1 >conftest.err |
rm -f conftest.er1 |
cat conftest.err >&5 |
echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
(exit $ac_status); } && { |
test -z "$ac_c_werror_flag" || |
test ! -s conftest.err |
} && test -s conftest.$ac_objext; then |
ac_cv_prog_cc_g=yes |
else |
echo "$as_me: failed program was:" >&5 |
sed 's/^/| /' conftest.$ac_ext >&5 |
|
|
fi |
|
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
fi |
|
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
fi |
|
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
ac_c_werror_flag=$ac_save_c_werror_flag |
fi |
{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 |
echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } |
if test "$ac_test_CFLAGS" = set; then |
CFLAGS=$ac_save_CFLAGS |
elif test $ac_cv_prog_cc_g = yes; then |
if test "$GCC" = yes; then |
CFLAGS="-g -O2" |
else |
CFLAGS="-g" |
fi |
else |
if test "$GCC" = yes; then |
CFLAGS="-O2" |
else |
CFLAGS= |
fi |
fi |
if test "$ac_test_CFLAGS" = set; then |
CFLAGS="$ac_save_CFLAGS" |
elif test $ac_cv_prog_cc_g = yes; then |
CFLAGS="-g -O2" |
else |
CFLAGS="-O2" |
fi |
else |
GCC= |
test "${CFLAGS+set}" = set || CFLAGS="-g" |
fi |
|
AS=${AS-as} |
|
AR=${AR-ar} |
|
LD=${LD-ld} |
|
if test -n "$ac_tool_prefix"; then |
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. |
set dummy ${ac_tool_prefix}ranlib; ac_word=$2 |
{ echo "$as_me:$LINENO: checking for $ac_word" >&5 |
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } |
if test "${ac_cv_prog_RANLIB+set}" = set; then |
echo $ECHO_N "(cached) $ECHO_C" >&6 |
else |
if test -n "$RANLIB"; then |
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. |
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" |
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
fi |
fi |
RANLIB=$ac_cv_prog_RANLIB |
if test -n "$RANLIB"; then |
{ echo "$as_me:$LINENO: result: $RANLIB" >&5 |
echo "${ECHO_T}$RANLIB" >&6; } |
else |
{ echo "$as_me:$LINENO: result: no" >&5 |
echo "${ECHO_T}no" >&6; } |
fi |
|
|
fi |
if test -z "$ac_cv_prog_RANLIB"; then |
ac_ct_RANLIB=$RANLIB |
# Extract the first word of "ranlib", so it can be a program name with args. |
set dummy ranlib; ac_word=$2 |
{ echo "$as_me:$LINENO: checking for $ac_word" >&5 |
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } |
if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then |
echo $ECHO_N "(cached) $ECHO_C" >&6 |
else |
if test -n "$ac_ct_RANLIB"; then |
ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. |
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
ac_cv_prog_ac_ct_RANLIB="ranlib" |
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
fi |
fi |
ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB |
if test -n "$ac_ct_RANLIB"; then |
{ echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 |
echo "${ECHO_T}$ac_ct_RANLIB" >&6; } |
else |
{ echo "$as_me:$LINENO: result: no" >&5 |
echo "${ECHO_T}no" >&6; } |
fi |
|
if test "x$ac_ct_RANLIB" = x; then |
RANLIB=":" |
else |
case $cross_compiling:$ac_tool_warned in |
yes:) |
{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools |
whose name does not start with the host triplet. If you think this |
configuration is useful to you, please write to autoconf@gnu.org." >&5 |
echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools |
whose name does not start with the host triplet. If you think this |
configuration is useful to you, please write to autoconf@gnu.org." >&2;} |
ac_tool_warned=yes ;; |
esac |
RANLIB=$ac_ct_RANLIB |
fi |
else |
RANLIB="$ac_cv_prog_RANLIB" |
fi |
|
# By default we simply use the C compiler to build assembly code. |
|
test "${CCAS+set}" = set || CCAS=$CC |
test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS |
|
|
|
|
crt0=crt0.o |
pcrt0=pcrt0.o |
|
case "${target}" in |
mips*-tx39*-*|mipstx39*-*-*) |
part_specific_obj= |
part_specific_defines= |
script_list="dve idt jmr3904app jmr3904dram jmr3904dram-java jmr3904app-java" |
bsp_list="libdve.a libidt.a libjmr3904.a" |
;; |
mipsisa32-*-* | mipsisa32el-*-* | \ |
mipsisa32r2-*-* | mipsisa32r2el-*-* | \ |
mipsisa64*-*-*) |
crt0="crt0_cfe.o crt0_cygmon.o crt0.o" |
pcrt0="pcrt0.o" |
part_specific_obj= |
part_specific_defines= |
script_list="idt32 idt64 cfe" |
bsp_list="libcygmon.a libidt.a libcfe.a" |
;; |
mips*-lsi*-*) |
part_specific_obj=entry.o |
part_specific_defines= |
script_list="lsi" |
bsp_list=liblsi.a |
;; |
mips64vr5*-*-*) |
part_specific_obj="vr5xxx.o cma101.o" |
part_specific_defines=-DR5000 |
script_list="idt pmon ddb ddb-kseg0 lsi idtecoff nullmon" |
bsp_list="libidt.a libpmon.a liblsi.a libnullmon.a" |
;; |
mips64vr-*-* | mips64vrel-*-*) |
part_specific_obj="vr5xxx.o cma101.o" |
script_list="ddb ddb-kseg0 nullmon" |
bsp_list="libpmon.a libnullmon.a" |
;; |
*) |
crt0="crt0_cfe.o crt0.o" |
part_specific_obj="vr4300.o cma101.o" |
part_specific_defines= |
script_list="idt pmon ddb ddb-kseg0 lsi cfe idtecoff nullmon" |
bsp_list="libidt.a libpmon.a liblsi.a libcfe.a libnullmon.a" |
;; |
esac |
|
host_makefile_frag=${srcdir}/../config/default.mh |
target_makefile_frag=${srcdir}/../config/mips.mt |
|
host_makefile_frag_path=$host_makefile_frag |
|
|
target_makefile_frag_path=$target_makefile_frag |
|
|
|
|
|
|
|
|
|
ac_config_files="$ac_config_files Makefile" |
|
cat >confcache <<\_ACEOF |
# This file is a shell script that caches the results of configure |
# tests run on this system so they can be shared between configure |
# scripts and configure runs, see configure's option --config-cache. |
# It is not useful on other systems. If it contains results you don't |
# want to keep, you may remove or edit it. |
# |
# config.status only pays attention to the cache file if you give it |
# the --recheck option to rerun configure. |
# |
# `ac_cv_env_foo' variables (set or unset) will be overridden when |
# loading this file, other *unset* `ac_cv_foo' will be assigned the |
# following values. |
|
_ACEOF |
|
# The following way of writing the cache mishandles newlines in values, |
# but we know of no workaround that is simple, portable, and efficient. |
# So, we kill variables containing newlines. |
# Ultrix sh set writes to stderr and can't be redirected directly, |
# and sets the high bit in the cache file unless we assign to the vars. |
( |
for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do |
eval ac_val=\$$ac_var |
case $ac_val in #( |
*${as_nl}*) |
case $ac_var in #( |
*_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 |
echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; |
esac |
case $ac_var in #( |
_ | IFS | as_nl) ;; #( |
*) $as_unset $ac_var ;; |
esac ;; |
esac |
done |
|
(set) 2>&1 | |
case $as_nl`(ac_space=' '; set) 2>&1` in #( |
*${as_nl}ac_space=\ *) |
# `set' does not quote correctly, so add quotes (double-quote |
# substitution turns \\\\ into \\, and sed turns \\ into \). |
sed -n \ |
"s/'/'\\\\''/g; |
s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" |
;; #( |
*) |
# `set' quotes correctly as required by POSIX, so do not add quotes. |
sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" |
;; |
esac | |
sort |
) | |
sed ' |
/^ac_cv_env_/b end |
t clear |
:clear |
s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ |
t end |
s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ |
:end' >>confcache |
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else |
if test -w "$cache_file"; then |
test "x$cache_file" != "x/dev/null" && |
{ echo "$as_me:$LINENO: updating cache $cache_file" >&5 |
echo "$as_me: updating cache $cache_file" >&6;} |
cat confcache >$cache_file |
else |
{ echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 |
echo "$as_me: not updating unwritable cache $cache_file" >&6;} |
fi |
fi |
rm -f confcache |
|
test "x$prefix" = xNONE && prefix=$ac_default_prefix |
# Let make expand exec_prefix. |
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' |
|
# Transform confdefs.h into DEFS. |
# Protect against shell expansion while executing Makefile rules. |
# Protect against Makefile macro expansion. |
# |
# If the first sed substitution is executed (which looks for macros that |
# take arguments), then branch to the quote section. Otherwise, |
# look for a macro that doesn't take arguments. |
ac_script=' |
t clear |
:clear |
s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g |
t quote |
s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g |
t quote |
b any |
:quote |
s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g |
s/\[/\\&/g |
s/\]/\\&/g |
s/\$/$$/g |
H |
:any |
${ |
g |
s/^\n// |
s/\n/ /g |
p |
} |
' |
DEFS=`sed -n "$ac_script" confdefs.h` |
|
|
ac_libobjs= |
ac_ltlibobjs= |
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue |
# 1. Remove the extension, and $U if already installed. |
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' |
ac_i=`echo "$ac_i" | sed "$ac_script"` |
# 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR |
# will be set to the directory where LIBOBJS objects are built. |
ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" |
ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' |
done |
LIBOBJS=$ac_libobjs |
|
LTLIBOBJS=$ac_ltlibobjs |
|
|
if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then |
{ { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. |
Usually this means the macro was only invoked conditionally." >&5 |
echo "$as_me: error: conditional \"AMDEP\" was never defined. |
Usually this means the macro was only invoked conditionally." >&2;} |
{ (exit 1); exit 1; }; } |
fi |
if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then |
{ { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. |
Usually this means the macro was only invoked conditionally." >&5 |
echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. |
Usually this means the macro was only invoked conditionally." >&2;} |
{ (exit 1); exit 1; }; } |
fi |
|
: ${CONFIG_STATUS=./config.status} |
ac_clean_files_save=$ac_clean_files |
ac_clean_files="$ac_clean_files $CONFIG_STATUS" |
{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 |
echo "$as_me: creating $CONFIG_STATUS" >&6;} |
cat >$CONFIG_STATUS <<_ACEOF |
#! $SHELL |
# Generated by $as_me. |
# Run this file to recreate the current configuration. |
# Compiler output produced by configure, useful for debugging |
# configure, is in config.log if it exists. |
|
debug=false |
ac_cs_recheck=false |
ac_cs_silent=false |
SHELL=\${CONFIG_SHELL-$SHELL} |
_ACEOF |
|
cat >>$CONFIG_STATUS <<\_ACEOF |
## --------------------- ## |
## M4sh Initialization. ## |
## --------------------- ## |
|
# Be more Bourne compatible |
DUALCASE=1; export DUALCASE # for MKS sh |
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then |
emulate sh |
NULLCMD=: |
# Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which |
# is contrary to our usage. Disable this feature. |
alias -g '${1+"$@"}'='"$@"' |
setopt NO_GLOB_SUBST |
else |
case `(set -o) 2>/dev/null` in |
*posix*) set -o posix ;; |
esac |
|
fi |
|
|
|
|
# PATH needs CR |
# Avoid depending upon Character Ranges. |
as_cr_letters='abcdefghijklmnopqrstuvwxyz' |
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' |
as_cr_Letters=$as_cr_letters$as_cr_LETTERS |
as_cr_digits='0123456789' |
as_cr_alnum=$as_cr_Letters$as_cr_digits |
|
# The user is always right. |
if test "${PATH_SEPARATOR+set}" != set; then |
echo "#! /bin/sh" >conf$$.sh |
echo "exit 0" >>conf$$.sh |
chmod +x conf$$.sh |
if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then |
PATH_SEPARATOR=';' |
else |
PATH_SEPARATOR=: |
fi |
rm -f conf$$.sh |
fi |
|
# Support unset when possible. |
if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then |
as_unset=unset |
else |
as_unset=false |
fi |
|
|
# IFS |
# We need space, tab and new line, in precisely that order. Quoting is |
# there to prevent editors from complaining about space-tab. |
# (If _AS_PATH_WALK were called with IFS unset, it would disable word |
# splitting by setting IFS to empty value.) |
as_nl=' |
' |
IFS=" "" $as_nl" |
|
# Find who we are. Look in the path if we contain no directory separator. |
case $0 in |
*[\\/]* ) as_myself=$0 ;; |
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break |
done |
IFS=$as_save_IFS |
|
;; |
esac |
# We did not find ourselves, most probably we were run as `sh COMMAND' |
# in which case we are not to be found in the path. |
if test "x$as_myself" = x; then |
as_myself=$0 |
fi |
if test ! -f "$as_myself"; then |
echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 |
{ (exit 1); exit 1; } |
fi |
|
# Work around bugs in pre-3.0 UWIN ksh. |
for as_var in ENV MAIL MAILPATH |
do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var |
done |
PS1='$ ' |
PS2='> ' |
PS4='+ ' |
|
# NLS nuisances. |
for as_var in \ |
LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ |
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ |
LC_TELEPHONE LC_TIME |
do |
if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then |
eval $as_var=C; export $as_var |
else |
($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var |
fi |
done |
|
# Required to use basename. |
if expr a : '\(a\)' >/dev/null 2>&1 && |
test "X`expr 00001 : '.*\(...\)'`" = X001; then |
as_expr=expr |
else |
as_expr=false |
fi |
|
if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then |
as_basename=basename |
else |
as_basename=false |
fi |
|
|
# Name of the executable. |
as_me=`$as_basename -- "$0" || |
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ |
X"$0" : 'X\(//\)$' \| \ |
X"$0" : 'X\(/\)' \| . 2>/dev/null || |
echo X/"$0" | |
sed '/^.*\/\([^/][^/]*\)\/*$/{ |
s//\1/ |
q |
} |
/^X\/\(\/\/\)$/{ |
s//\1/ |
q |
} |
/^X\/\(\/\).*/{ |
s//\1/ |
q |
} |
s/.*/./; q'` |
|
# CDPATH. |
$as_unset CDPATH |
|
|
|
as_lineno_1=$LINENO |
as_lineno_2=$LINENO |
test "x$as_lineno_1" != "x$as_lineno_2" && |
test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { |
|
# Create $as_me.lineno as a copy of $as_myself, but with $LINENO |
# uniformly replaced by the line number. The first 'sed' inserts a |
# line-number line after each line using $LINENO; the second 'sed' |
# does the real work. The second script uses 'N' to pair each |
# line-number line with the line containing $LINENO, and appends |
# trailing '-' during substitution so that $LINENO is not a special |
# case at line end. |
# (Raja R Harinath suggested sed '=', and Paul Eggert wrote the |
# scripts with optimization help from Paolo Bonzini. Blame Lee |
# E. McMahon (1931-1989) for sed's syntax. :-) |
sed -n ' |
p |
/[$]LINENO/= |
' <$as_myself | |
sed ' |
s/[$]LINENO.*/&-/ |
t lineno |
b |
:lineno |
N |
:loop |
s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ |
t loop |
s/-\n.*// |
' >$as_me.lineno && |
chmod +x "$as_me.lineno" || |
{ echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 |
{ (exit 1); exit 1; }; } |
|
# Don't try to exec as it changes $[0], causing all sort of problems |
# (the dirname of $[0] is not the place where we might find the |
# original and so on. Autoconf is especially sensitive to this). |
. "./$as_me.lineno" |
# Exit status is that of the last command. |
exit |
} |
|
|
if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then |
as_dirname=dirname |
else |
as_dirname=false |
fi |
|
ECHO_C= ECHO_N= ECHO_T= |
case `echo -n x` in |
-n*) |
case `echo 'x\c'` in |
*c*) ECHO_T=' ';; # ECHO_T is single tab character. |
*) ECHO_C='\c';; |
esac;; |
*) |
ECHO_N='-n';; |
esac |
|
if expr a : '\(a\)' >/dev/null 2>&1 && |
test "X`expr 00001 : '.*\(...\)'`" = X001; then |
as_expr=expr |
else |
as_expr=false |
fi |
|
rm -f conf$$ conf$$.exe conf$$.file |
if test -d conf$$.dir; then |
rm -f conf$$.dir/conf$$.file |
else |
rm -f conf$$.dir |
mkdir conf$$.dir |
fi |
echo >conf$$.file |
if ln -s conf$$.file conf$$ 2>/dev/null; then |
as_ln_s='ln -s' |
# ... but there are two gotchas: |
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. |
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. |
# In both cases, we have to default to `cp -p'. |
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || |
as_ln_s='cp -p' |
elif ln conf$$.file conf$$ 2>/dev/null; then |
as_ln_s=ln |
else |
as_ln_s='cp -p' |
fi |
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file |
rmdir conf$$.dir 2>/dev/null |
|
if mkdir -p . 2>/dev/null; then |
as_mkdir_p=: |
else |
test -d ./-p && rmdir ./-p |
as_mkdir_p=false |
fi |
|
if test -x / >/dev/null 2>&1; then |
as_test_x='test -x' |
else |
if ls -dL / >/dev/null 2>&1; then |
as_ls_L_option=L |
else |
as_ls_L_option= |
fi |
as_test_x=' |
eval sh -c '\'' |
if test -d "$1"; then |
test -d "$1/."; |
else |
case $1 in |
-*)set "./$1";; |
esac; |
case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in |
???[sx]*):;;*)false;;esac;fi |
'\'' sh |
' |
fi |
as_executable_p=$as_test_x |
|
# Sed expression to map a string onto a valid CPP name. |
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" |
|
# Sed expression to map a string onto a valid variable name. |
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" |
|
|
exec 6>&1 |
|
# Save the log message, to keep $[0] and so on meaningful, and to |
# report actual input values of CONFIG_FILES etc. instead of their |
# values after options handling. |
ac_log=" |
This file was extended by $as_me, which was |
generated by GNU Autoconf 2.61. Invocation command line was |
|
CONFIG_FILES = $CONFIG_FILES |
CONFIG_HEADERS = $CONFIG_HEADERS |
CONFIG_LINKS = $CONFIG_LINKS |
CONFIG_COMMANDS = $CONFIG_COMMANDS |
$ $0 $@ |
|
on `(hostname || uname -n) 2>/dev/null | sed 1q` |
" |
|
_ACEOF |
|
cat >>$CONFIG_STATUS <<_ACEOF |
# Files that config.status was made for. |
config_files="$ac_config_files" |
config_commands="$ac_config_commands" |
|
_ACEOF |
|
cat >>$CONFIG_STATUS <<\_ACEOF |
ac_cs_usage="\ |
\`$as_me' instantiates files from templates according to the |
current configuration. |
|
Usage: $0 [OPTIONS] [FILE]... |
|
-h, --help print this help, then exit |
-V, --version print version number and configuration settings, then exit |
-q, --quiet do not print progress messages |
-d, --debug don't remove temporary files |
--recheck update $as_me by reconfiguring in the same conditions |
--file=FILE[:TEMPLATE] |
instantiate the configuration file FILE |
|
Configuration files: |
$config_files |
|
Configuration commands: |
$config_commands |
|
Report bugs to <bug-autoconf@gnu.org>." |
|
_ACEOF |
cat >>$CONFIG_STATUS <<_ACEOF |
ac_cs_version="\\ |
config.status |
configured by $0, generated by GNU Autoconf 2.61, |
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" |
|
Copyright (C) 2006 Free Software Foundation, Inc. |
This config.status script is free software; the Free Software Foundation |
gives unlimited permission to copy, distribute and modify it." |
|
ac_pwd='$ac_pwd' |
srcdir='$srcdir' |
INSTALL='$INSTALL' |
_ACEOF |
|
cat >>$CONFIG_STATUS <<\_ACEOF |
# If no file are specified by the user, then we need to provide default |
# value. By we need to know if files were specified by the user. |
ac_need_defaults=: |
while test $# != 0 |
do |
case $1 in |
--*=*) |
ac_option=`expr "X$1" : 'X\([^=]*\)='` |
ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` |
ac_shift=: |
;; |
*) |
ac_option=$1 |
ac_optarg=$2 |
ac_shift=shift |
;; |
esac |
|
case $ac_option in |
# Handling of the options. |
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) |
ac_cs_recheck=: ;; |
--version | --versio | --versi | --vers | --ver | --ve | --v | -V ) |
echo "$ac_cs_version"; exit ;; |
--debug | --debu | --deb | --de | --d | -d ) |
debug=: ;; |
--file | --fil | --fi | --f ) |
$ac_shift |
CONFIG_FILES="$CONFIG_FILES $ac_optarg" |
ac_need_defaults=false;; |
--he | --h | --help | --hel | -h ) |
echo "$ac_cs_usage"; exit ;; |
-q | -quiet | --quiet | --quie | --qui | --qu | --q \ |
| -silent | --silent | --silen | --sile | --sil | --si | --s) |
ac_cs_silent=: ;; |
|
# This is an error. |
-*) { echo "$as_me: error: unrecognized option: $1 |
Try \`$0 --help' for more information." >&2 |
{ (exit 1); exit 1; }; } ;; |
|
*) ac_config_targets="$ac_config_targets $1" |
ac_need_defaults=false ;; |
|
esac |
shift |
done |
|
ac_configure_extra_args= |
|
if $ac_cs_silent; then |
exec 6>/dev/null |
ac_configure_extra_args="$ac_configure_extra_args --silent" |
fi |
|
_ACEOF |
cat >>$CONFIG_STATUS <<_ACEOF |
if \$ac_cs_recheck; then |
echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 |
CONFIG_SHELL=$SHELL |
export CONFIG_SHELL |
exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion |
fi |
|
_ACEOF |
cat >>$CONFIG_STATUS <<\_ACEOF |
exec 5>>config.log |
{ |
echo |
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX |
## Running $as_me. ## |
_ASBOX |
echo "$ac_log" |
} >&5 |
|
_ACEOF |
cat >>$CONFIG_STATUS <<_ACEOF |
# |
# INIT-COMMANDS |
# |
AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" |
srcdir=${srcdir} |
target=${target} |
with_multisubdir=${with_multisubdir} |
ac_configure_args="${ac_configure_args} --enable-multilib" |
CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} |
libgloss_topdir=${libgloss_topdir} |
|
|
_ACEOF |
|
cat >>$CONFIG_STATUS <<\_ACEOF |
|
# Handling of arguments. |
for ac_config_target in $ac_config_targets |
do |
case $ac_config_target in |
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; |
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; |
|
*) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 |
echo "$as_me: error: invalid argument: $ac_config_target" >&2;} |
{ (exit 1); exit 1; }; };; |
esac |
done |
|
|
# If the user did not use the arguments to specify the items to instantiate, |
# then the envvar interface is used. Set only those that are not. |
# We use the long form for the default assignment because of an extremely |
# bizarre bug on SunOS 4.1.3. |
if $ac_need_defaults; then |
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files |
test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands |
fi |
|
# Have a temporary directory for convenience. Make it in the build tree |
# simply because there is no reason against having it here, and in addition, |
# creating and moving files from /tmp can sometimes cause problems. |
# Hook for its removal unless debugging. |
# Note that there is a small window in which the directory will not be cleaned: |
# after its creation but before its name has been assigned to `$tmp'. |
$debug || |
{ |
tmp= |
trap 'exit_status=$? |
{ test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status |
' 0 |
trap '{ (exit 1); exit 1; }' 1 2 13 15 |
} |
# Create a (secure) tmp directory for tmp files. |
|
{ |
tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && |
test -n "$tmp" && test -d "$tmp" |
} || |
{ |
tmp=./conf$$-$RANDOM |
(umask 077 && mkdir "$tmp") |
} || |
{ |
echo "$me: cannot create a temporary directory in ." >&2 |
{ (exit 1); exit 1; } |
} |
|
# |
# Set up the sed scripts for CONFIG_FILES section. |
# |
|
# No need to generate the scripts if there are no CONFIG_FILES. |
# This happens for instance when ./config.status config.h |
if test -n "$CONFIG_FILES"; then |
|
_ACEOF |
|
# Create sed commands to just substitute file output variables. |
|
# Remaining file output variables are in a fragment that also has non-file |
# output varibles. |
|
|
|
ac_delim='%!_!# ' |
for ac_last_try in false false false false false :; do |
cat >conf$$subs.sed <<_ACEOF |
SHELL!$SHELL$ac_delim |
PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim |
PACKAGE_NAME!$PACKAGE_NAME$ac_delim |
PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim |
PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim |
PACKAGE_STRING!$PACKAGE_STRING$ac_delim |
PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim |
exec_prefix!$exec_prefix$ac_delim |
prefix!$prefix$ac_delim |
program_transform_name!$program_transform_name$ac_delim |
bindir!$bindir$ac_delim |
sbindir!$sbindir$ac_delim |
libexecdir!$libexecdir$ac_delim |
datarootdir!$datarootdir$ac_delim |
datadir!$datadir$ac_delim |
sysconfdir!$sysconfdir$ac_delim |
sharedstatedir!$sharedstatedir$ac_delim |
localstatedir!$localstatedir$ac_delim |
includedir!$includedir$ac_delim |
oldincludedir!$oldincludedir$ac_delim |
docdir!$docdir$ac_delim |
infodir!$infodir$ac_delim |
htmldir!$htmldir$ac_delim |
dvidir!$dvidir$ac_delim |
pdfdir!$pdfdir$ac_delim |
psdir!$psdir$ac_delim |
libdir!$libdir$ac_delim |
localedir!$localedir$ac_delim |
mandir!$mandir$ac_delim |
DEFS!$DEFS$ac_delim |
ECHO_C!$ECHO_C$ac_delim |
ECHO_N!$ECHO_N$ac_delim |
ECHO_T!$ECHO_T$ac_delim |
LIBS!$LIBS$ac_delim |
build_alias!$build_alias$ac_delim |
host_alias!$host_alias$ac_delim |
target_alias!$target_alias$ac_delim |
build!$build$ac_delim |
build_cpu!$build_cpu$ac_delim |
build_vendor!$build_vendor$ac_delim |
build_os!$build_os$ac_delim |
host!$host$ac_delim |
host_cpu!$host_cpu$ac_delim |
host_vendor!$host_vendor$ac_delim |
host_os!$host_os$ac_delim |
target!$target$ac_delim |
target_cpu!$target_cpu$ac_delim |
target_vendor!$target_vendor$ac_delim |
target_os!$target_os$ac_delim |
INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim |
INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim |
INSTALL_DATA!$INSTALL_DATA$ac_delim |
CC!$CC$ac_delim |
am__leading_dot!$am__leading_dot$ac_delim |
DEPDIR!$DEPDIR$ac_delim |
am__include!$am__include$ac_delim |
am__quote!$am__quote$ac_delim |
AMDEP_TRUE!$AMDEP_TRUE$ac_delim |
AMDEP_FALSE!$AMDEP_FALSE$ac_delim |
AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim |
CCDEPMODE!$CCDEPMODE$ac_delim |
am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim |
am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim |
AS!$AS$ac_delim |
AR!$AR$ac_delim |
LD!$LD$ac_delim |
RANLIB!$RANLIB$ac_delim |
CCAS!$CCAS$ac_delim |
CCASFLAGS!$CCASFLAGS$ac_delim |
host_makefile_frag_path!$host_makefile_frag_path$ac_delim |
target_makefile_frag_path!$target_makefile_frag_path$ac_delim |
part_specific_obj!$part_specific_obj$ac_delim |
part_specific_defines!$part_specific_defines$ac_delim |
script_list!$script_list$ac_delim |
bsp_list!$bsp_list$ac_delim |
crt0!$crt0$ac_delim |
pcrt0!$pcrt0$ac_delim |
LIBOBJS!$LIBOBJS$ac_delim |
LTLIBOBJS!$LTLIBOBJS$ac_delim |
_ACEOF |
|
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 79; then |
break |
elif $ac_last_try; then |
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 |
echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} |
{ (exit 1); exit 1; }; } |
else |
ac_delim="$ac_delim!$ac_delim _$ac_delim!! " |
fi |
done |
|
ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` |
if test -n "$ac_eof"; then |
ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` |
ac_eof=`expr $ac_eof + 1` |
fi |
|
cat >>$CONFIG_STATUS <<_ACEOF |
cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof |
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end |
/^[ ]*@host_makefile_frag@[ ]*$/{ |
r $host_makefile_frag |
d |
} |
/^[ ]*@target_makefile_frag@[ ]*$/{ |
r $target_makefile_frag |
d |
} |
_ACEOF |
sed ' |
s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g |
s/^/s,@/; s/!/@,|#_!!_#|/ |
:n |
t n |
s/'"$ac_delim"'$/,g/; t |
s/$/\\/; p |
N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n |
' >>$CONFIG_STATUS <conf$$subs.sed |
rm -f conf$$subs.sed |
cat >>$CONFIG_STATUS <<_ACEOF |
:end |
s/|#_!!_#|//g |
CEOF$ac_eof |
_ACEOF |
|
|
# VPATH may cause trouble with some makes, so we remove $(srcdir), |
# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and |
# trailing colons and then remove the whole line if VPATH becomes empty |
# (actually we leave an empty line to preserve line numbers). |
if test "x$srcdir" = x.; then |
ac_vpsub='/^[ ]*VPATH[ ]*=/{ |
s/:*\$(srcdir):*/:/ |
s/:*\${srcdir}:*/:/ |
s/:*@srcdir@:*/:/ |
s/^\([^=]*=[ ]*\):*/\1/ |
s/:*$// |
s/^[^=]*=[ ]*$// |
}' |
fi |
|
cat >>$CONFIG_STATUS <<\_ACEOF |
fi # test -n "$CONFIG_FILES" |
|
|
for ac_tag in :F $CONFIG_FILES :C $CONFIG_COMMANDS |
do |
case $ac_tag in |
:[FHLC]) ac_mode=$ac_tag; continue;; |
esac |
case $ac_mode$ac_tag in |
:[FHL]*:*);; |
:L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 |
echo "$as_me: error: Invalid tag $ac_tag." >&2;} |
{ (exit 1); exit 1; }; };; |
:[FH]-) ac_tag=-:-;; |
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;; |
esac |
ac_save_IFS=$IFS |
IFS=: |
set x $ac_tag |
IFS=$ac_save_IFS |
shift |
ac_file=$1 |
shift |
|
case $ac_mode in |
:L) ac_source=$1;; |
:[FH]) |
ac_file_inputs= |
for ac_f |
do |
case $ac_f in |
-) ac_f="$tmp/stdin";; |
*) # Look for the file first in the build tree, then in the source tree |
# (if the path is not absolute). The absolute path cannot be DOS-style, |
# because $ac_f cannot contain `:'. |
test -f "$ac_f" || |
case $ac_f in |
[\\/$]*) false;; |
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; |
esac || |
{ { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 |
echo "$as_me: error: cannot find input file: $ac_f" >&2;} |
{ (exit 1); exit 1; }; };; |
esac |
ac_file_inputs="$ac_file_inputs $ac_f" |
done |
|
# Let's still pretend it is `configure' which instantiates (i.e., don't |
# use $as_me), people would be surprised to read: |
# /* config.h. Generated by config.status. */ |
configure_input="Generated from "`IFS=: |
echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." |
if test x"$ac_file" != x-; then |
configure_input="$ac_file. $configure_input" |
{ echo "$as_me:$LINENO: creating $ac_file" >&5 |
echo "$as_me: creating $ac_file" >&6;} |
fi |
|
case $ac_tag in |
*:-:* | *:-) cat >"$tmp/stdin";; |
esac |
;; |
esac |
|
ac_dir=`$as_dirname -- "$ac_file" || |
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ |
X"$ac_file" : 'X\(//\)[^/]' \| \ |
X"$ac_file" : 'X\(//\)$' \| \ |
X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || |
echo X"$ac_file" | |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)[^/].*/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)$/{ |
s//\1/ |
q |
} |
/^X\(\/\).*/{ |
s//\1/ |
q |
} |
s/.*/./; q'` |
{ as_dir="$ac_dir" |
case $as_dir in #( |
-*) as_dir=./$as_dir;; |
esac |
test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { |
as_dirs= |
while :; do |
case $as_dir in #( |
*\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( |
*) as_qdir=$as_dir;; |
esac |
as_dirs="'$as_qdir' $as_dirs" |
as_dir=`$as_dirname -- "$as_dir" || |
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ |
X"$as_dir" : 'X\(//\)[^/]' \| \ |
X"$as_dir" : 'X\(//\)$' \| \ |
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || |
echo X"$as_dir" | |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)[^/].*/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)$/{ |
s//\1/ |
q |
} |
/^X\(\/\).*/{ |
s//\1/ |
q |
} |
s/.*/./; q'` |
test -d "$as_dir" && break |
done |
test -z "$as_dirs" || eval "mkdir $as_dirs" |
} || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 |
echo "$as_me: error: cannot create directory $as_dir" >&2;} |
{ (exit 1); exit 1; }; }; } |
ac_builddir=. |
|
case "$ac_dir" in |
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; |
*) |
ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` |
# A ".." for each directory in $ac_dir_suffix. |
ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` |
case $ac_top_builddir_sub in |
"") ac_top_builddir_sub=. ac_top_build_prefix= ;; |
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;; |
esac ;; |
esac |
ac_abs_top_builddir=$ac_pwd |
ac_abs_builddir=$ac_pwd$ac_dir_suffix |
# for backward compatibility: |
ac_top_builddir=$ac_top_build_prefix |
|
case $srcdir in |
.) # We are building in place. |
ac_srcdir=. |
ac_top_srcdir=$ac_top_builddir_sub |
ac_abs_top_srcdir=$ac_pwd ;; |
[\\/]* | ?:[\\/]* ) # Absolute name. |
ac_srcdir=$srcdir$ac_dir_suffix; |
ac_top_srcdir=$srcdir |
ac_abs_top_srcdir=$srcdir ;; |
*) # Relative name. |
ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix |
ac_top_srcdir=$ac_top_build_prefix$srcdir |
ac_abs_top_srcdir=$ac_pwd/$srcdir ;; |
esac |
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix |
|
|
case $ac_mode in |
:F) |
# |
# CONFIG_FILE |
# |
|
case $INSTALL in |
[\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; |
*) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; |
esac |
_ACEOF |
|
cat >>$CONFIG_STATUS <<\_ACEOF |
# If the template does not know about datarootdir, expand it. |
# FIXME: This hack should be removed a few years after 2.60. |
ac_datarootdir_hack=; ac_datarootdir_seen= |
|
case `sed -n '/datarootdir/ { |
p |
q |
} |
/@datadir@/p |
/@docdir@/p |
/@infodir@/p |
/@localedir@/p |
/@mandir@/p |
' $ac_file_inputs` in |
*datarootdir*) ac_datarootdir_seen=yes;; |
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) |
{ echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 |
echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} |
_ACEOF |
cat >>$CONFIG_STATUS <<_ACEOF |
ac_datarootdir_hack=' |
s&@datadir@&$datadir&g |
s&@docdir@&$docdir&g |
s&@infodir@&$infodir&g |
s&@localedir@&$localedir&g |
s&@mandir@&$mandir&g |
s&\\\${datarootdir}&$datarootdir&g' ;; |
esac |
_ACEOF |
|
# Neutralize VPATH when `$srcdir' = `.'. |
# Shell code in configure.ac might set extrasub. |
# FIXME: do we really want to maintain this feature? |
cat >>$CONFIG_STATUS <<_ACEOF |
sed "$ac_vpsub |
$extrasub |
_ACEOF |
cat >>$CONFIG_STATUS <<\_ACEOF |
:t |
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b |
s&@configure_input@&$configure_input&;t t |
s&@top_builddir@&$ac_top_builddir_sub&;t t |
s&@srcdir@&$ac_srcdir&;t t |
s&@abs_srcdir@&$ac_abs_srcdir&;t t |
s&@top_srcdir@&$ac_top_srcdir&;t t |
s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t |
s&@builddir@&$ac_builddir&;t t |
s&@abs_builddir@&$ac_abs_builddir&;t t |
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t |
s&@INSTALL@&$ac_INSTALL&;t t |
$ac_datarootdir_hack |
" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out |
|
test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && |
{ ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && |
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && |
{ echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' |
which seems to be undefined. Please make sure it is defined." >&5 |
echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' |
which seems to be undefined. Please make sure it is defined." >&2;} |
|
rm -f "$tmp/stdin" |
case $ac_file in |
-) cat "$tmp/out"; rm -f "$tmp/out";; |
*) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; |
esac |
;; |
|
|
:C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 |
echo "$as_me: executing $ac_file commands" >&6;} |
;; |
esac |
|
|
case $ac_file$ac_mode in |
"depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do |
# Strip MF so we end up with the name of the file. |
mf=`echo "$mf" | sed -e 's/:.*$//'` |
# Check whether this is an Automake generated Makefile or not. |
# We used to match only the files named `Makefile.in', but |
# some people rename them; so instead we look at the file content. |
# Grep'ing the first line is not enough: some people post-process |
# each Makefile.in and add a new line on top of each file to say so. |
# So let's grep whole file. |
if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then |
dirpart=`$as_dirname -- "$mf" || |
$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ |
X"$mf" : 'X\(//\)[^/]' \| \ |
X"$mf" : 'X\(//\)$' \| \ |
X"$mf" : 'X\(/\)' \| . 2>/dev/null || |
echo X"$mf" | |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)[^/].*/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)$/{ |
s//\1/ |
q |
} |
/^X\(\/\).*/{ |
s//\1/ |
q |
} |
s/.*/./; q'` |
else |
continue |
fi |
# Extract the definition of DEPDIR, am__include, and am__quote |
# from the Makefile without running `make'. |
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` |
test -z "$DEPDIR" && continue |
am__include=`sed -n 's/^am__include = //p' < "$mf"` |
test -z "am__include" && continue |
am__quote=`sed -n 's/^am__quote = //p' < "$mf"` |
# When using ansi2knr, U may be empty or an underscore; expand it |
U=`sed -n 's/^U = //p' < "$mf"` |
# Find all dependency output files, they are included files with |
# $(DEPDIR) in their names. We invoke sed twice because it is the |
# simplest approach to changing $(DEPDIR) to its actual value in the |
# expansion. |
for file in `sed -n " |
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ |
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do |
# Make sure the directory exists. |
test -f "$dirpart/$file" && continue |
fdir=`$as_dirname -- "$file" || |
$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ |
X"$file" : 'X\(//\)[^/]' \| \ |
X"$file" : 'X\(//\)$' \| \ |
X"$file" : 'X\(/\)' \| . 2>/dev/null || |
echo X"$file" | |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)[^/].*/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)$/{ |
s//\1/ |
q |
} |
/^X\(\/\).*/{ |
s//\1/ |
q |
} |
s/.*/./; q'` |
{ as_dir=$dirpart/$fdir |
case $as_dir in #( |
-*) as_dir=./$as_dir;; |
esac |
test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { |
as_dirs= |
while :; do |
case $as_dir in #( |
*\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( |
*) as_qdir=$as_dir;; |
esac |
as_dirs="'$as_qdir' $as_dirs" |
as_dir=`$as_dirname -- "$as_dir" || |
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ |
X"$as_dir" : 'X\(//\)[^/]' \| \ |
X"$as_dir" : 'X\(//\)$' \| \ |
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || |
echo X"$as_dir" | |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)[^/].*/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)$/{ |
s//\1/ |
q |
} |
/^X\(\/\).*/{ |
s//\1/ |
q |
} |
s/.*/./; q'` |
test -d "$as_dir" && break |
done |
test -z "$as_dirs" || eval "mkdir $as_dirs" |
} || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 |
echo "$as_me: error: cannot create directory $as_dir" >&2;} |
{ (exit 1); exit 1; }; }; } |
# echo "creating $dirpart/$file" |
echo '# dummy' > "$dirpart/$file" |
done |
done |
;; |
"Makefile":F) . ${libgloss_topdir}/config-ml.in ;; |
|
esac |
done # for ac_tag |
|
|
{ (exit 0); exit 0; } |
_ACEOF |
chmod +x $CONFIG_STATUS |
ac_clean_files=$ac_clean_files_save |
|
|
# configure is writing to config.log, and then calls config.status. |
# config.status does its own redirection, appending to config.log. |
# Unfortunately, on DOS this fails, as config.log is still kept open |
# by configure, so config.status won't be able to write to it; its |
# output is simply discarded. So we exec the FD to /dev/null, |
# effectively closing config.log, so it can be properly (re)opened and |
# appended to by config.status. When coming back to configure, we |
# need to make the FD available again. |
if test "$no_create" != yes; then |
ac_cs_success=: |
ac_config_status_args= |
test "$silent" = yes && |
ac_config_status_args="$ac_config_status_args --quiet" |
exec 5>/dev/null |
$SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false |
exec 5>>config.log |
# Use ||, not &&, to avoid exiting from the if with $? = 1, which |
# would make configure fail if this is the last instruction. |
$ac_cs_success || { (exit 1); exit 1; } |
fi |
|
configure
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: Makefile.in
===================================================================
--- Makefile.in (nonexistent)
+++ Makefile.in (revision 829)
@@ -0,0 +1,259 @@
+# Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000 Cygnus Support
+#
+# 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.
+
+DESTDIR =
+VPATH = @srcdir@
+srcdir = @srcdir@
+objdir = .
+srcroot = $(srcdir)/../..
+objroot = $(objdir)/../..
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+host_alias = @host_alias@
+target_alias = @target_alias@
+program_transform_name = @program_transform_name@
+
+bindir = @bindir@
+libdir = @libdir@
+tooldir = $(exec_prefix)/$(target_alias)
+
+# Multilib support variables.
+# TOP is used instead of MULTI{BUILD,SRC}TOP.
+MULTIDIRS =
+MULTISUBDIR =
+MULTIDO = true
+MULTICLEAN = true
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+
+SHELL = /bin/sh
+
+CC = @CC@
+
+#AS = @AS@
+AS = `if [ -f ${objroot}/../gas/as.new ] ; \
+ then echo ${objroot}/../gas/as.new ; \
+ else echo as ; fi`
+
+AR = @AR@
+
+#LD = @LD@
+LD = `if [ -f ${objroot}/../ld/ld.new ] ; \
+ then echo ${objroot}/../ld/ld.new ; \
+ else echo ld ; fi`
+
+RANLIB = @RANLIB@
+
+OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \
+ then echo ${objroot}/../binutils/objdump ; \
+ else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi`
+OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \
+ then echo ${objroot}/../binutils/objcopy ; \
+ else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi`
+
+CRT0 = @crt0@
+PCRT0 = @pcrt0@
+GENOBJS = syscalls.o fstat.o getpid.o isatty.o kill.o \
+ lseek.o print.o putnum.o stat.o unlink.o
+GENOBJS2 = open.o close.o read.o write.o
+IDTOBJS = idtmon.o @part_specific_obj@ ${GENOBJS}
+PMONOBJS = pmon.o @part_specific_obj@ ${GENOBJS}
+LSIOBJS = lsipmon.o @part_specific_obj@ ${GENOBJS}
+DVEOBJS = dvemon.o @part_specific_obj@ ${GENOBJS} ${GENOBJS2}
+JMR3904OBJS = jmr3904-io.o @part_specific_obj@ ${GENOBJS} ${GENOBJS2}
+CFEOBJS = cfe.o cfe_api.o cfe_mem.o @part_specific_obj@ ${GENOBJS} ${GENOBJS2}
+CYGMONOBJS = open.o close.o cygmon.o @part_specific_obj@ ${GENOBJS}
+
+# Nullmon cannot support read and write, but the test cases pull them in via libs
+NULLMONOBJS = nullmon.o @part_specific_obj@ ${GENOBJS}
+
+CFLAGS = -g
+
+GCC_LDFLAGS = `if [ -d ${objroot}/../gcc ] ; \
+ then echo -L${objroot}/../gcc ; fi`
+
+SCRIPTS = @script_list@
+BSP = @bsp_list@
+
+PART_SPECIFIC_DEFINES = @part_specific_defines@
+
+# Host specific makefile fragment comes in here.
+@host_makefile_frag@
+
+#
+# build a test program for each target board. Just trying to get
+# it to link is a good test, so we ignore all the errors for now.
+#
+
+all: ${CRT0} ${PCRT0} test.o ${BSP}
+
+#
+# here's where we build the board support packages for each target
+#
+mipsidt.o: $(IDTOBJS)
+ ${LD} -r $(IDTOBJS) -o $@
+
+mipspmon.o: $(PMONOBJS)
+ ${LD} -r $(PMONOBJS) -o $@
+
+mipslsi.o: $(PMONOBJS)
+ ${LD} -r $(LSIOBJS) -o $@
+
+libidt.a: $(IDTOBJS)
+ ${AR} ${ARFLAGS} $@ $(IDTOBJS)
+ ${RANLIB} $@
+
+libpmon.a: $(PMONOBJS)
+ ${AR} ${ARFLAGS} $@ $(PMONOBJS)
+ ${RANLIB} $@
+
+liblsi.a: $(LSIOBJS)
+ ${AR} ${ARFLAGS} $@ $(LSIOBJS)
+ ${RANLIB} $@
+
+libdve.a: $(DVEOBJS)
+ ${AR} ${ARFLAGS} $@ $(DVEOBJS)
+ ${RANLIB} $@
+
+libjmr3904.a: $(JMR3904OBJS)
+ ${AR} ${ARFLAGS} $@ $(JMR3904OBJS)
+ ${RANLIB} $@
+
+libcygmon.a: $(CYGMONOBJS)
+ ${AR} ${ARFLAGS} $@ $(CYGMONOBJS)
+ ${RANLIB} $@
+
+libcfe.a: $(CFEOBJS)
+ ${AR} ${ARFLAGS} $@ $(CFEOBJS)
+ ${RANLIB} $@
+
+# nullmon.a , This is what you want if you want crt0 but NO mon services
+# Supports GDB sim testing, board bringups, ICE operation.
+libnullmon.a: $(NULLMONOBJS)
+ ${AR} ${ARFLAGS} $@ $(NULLMONOBJS)
+ ${RANLIB} $@
+
+
+# compile a fully linked binary. The -Wl,-T*.ld is for the linker
+# script. By using -Wl, the linker script is put on the proper place
+# in the comand line for ld, and all the symbols will get fully
+# resolved.
+
+test: $(OBJS) ${BSP} pmon-test idt-test cfe-test
+ @echo Done...
+
+dtor.o: $(srcdir)/dtor.C
+ $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -o $@ -c $<
+dtor.x: dtor.o ${CRT0} ${srcdir}/pmon.ld Makefile libpmon.a
+ ${CC} $(CFLAGS_FOR_TARGET) -L${srcdir} -L${objdir} \
+ dtor.o -o $@ $(NEWLIB_LDFLAGS) -N -Wl,-Tpmon.ld
+
+pmon-test.x: test.o ${CRT0} Makefile libpmon.a
+ ${CC} $(CFLAGS_FOR_TARGET) -L${srcdir} -L${objdir} \
+ test.o -o $@ $(NEWLIB_LDFLAGS) -Wl,-Tpmon.ld
+pmon-test.srec: pmon-test.x
+ $(OBJCOPY) -O srec pmon-test.x $@
+pmon-test.dis: pmon-test.x
+ @rm -fr pmon-test.dis
+ $(OBJDUMP) -d pmon-test.x > $@
+pmon-test: pmon-test.srec pmon-test.dis
+
+idt-test.x: test.o ${CRT0} Makefile libidt.a
+ ${CC} $(CFLAGS_FOR_TARGET) -L${srcdir} -L${objdir} \
+ test.o -o $@ $(NEWLIB_LDFLAGS) -Wl,-Tidt.ld
+idt-test.srec: idt-test.x
+ $(OBJCOPY) -O srec idt-test.x $@
+idt-test.dis: idt-test.x
+ @rm -fr idt-test.dis
+ $(OBJDUMP) -d idt-test.x > $@
+idt-test: idt-test.srec idt-test.dis
+
+cfe-test.x: test.o ${CRT0} Makefile libcfe.a
+ ${CC} $(CFLAGS_FOR_TARGET) -L${srcdir} -L${objdir} \
+ test.o -o $@ $(NEWLIB_LDFLAGS) -Wl,-Tcfe.ld
+cfe-test.srec: cfe-test.x
+ $(OBJCOPY) -O srec cfe-test.x $@
+cfe-test.dis: cfe-test.x
+ @rm -fr cfe-test.dis
+ $(OBJDUMP) -d cfe-test.x > $@
+cfe-test: cfe-test.srec cfe-test.dis
+
+doc:
+
+clean mostlyclean:
+ rm -f a.out core *.i *~ *.o *-test *.srec *.dis *.map *.x
+
+distclean maintainer-clean realclean: clean
+ rm -f Makefile config.status a.out
+
+.PHONY: install info install-info clean-info
+install:
+ @for file in $(CRT0) $(PCRT0) $(BSP); do \
+ $(INSTALL_DATA) $${file} $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}; \
+ done
+ @for script in ${SCRIPTS}; do\
+ $(INSTALL_DATA) ${srcdir}/$${script}.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$${script}.ld; \
+ done
+
+info:
+install-info:
+clean-info:
+
+test.o: ${srcdir}/test.c
+
+# these are for the BSPs
+crt0.o: ${srcdir}/crt0.S
+pcrt0.o: ${srcdir}/crt0.S
+ $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) -DGCRT0 ${srcdir}/crt0.S -o ${PCRT0}
+crt0_cfe.o: ${srcdir}/crt0_cfe.S
+crt0_cygmon.o: ${srcdir}/crt0_cygmon.S
+idtmon.o: ${srcdir}/idtmon.S
+pmon.o: ${srcdir}/pmon.S
+ $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) $(PART_SPECIFIC_DEFINES) ${srcdir}/pmon.S -o pmon.o
+vr4300.o: ${srcdir}/vr4300.S
+ $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) ${srcdir}/vr4300.S
+vr5xxx.o: ${srcdir}/vr5xxx.S
+ $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) ${srcdir}/vr5xxx.S
+lsipmon.o: $(srcdir)/lsipmon.S $(srcdir)/pmon.S
+jmr3904-io.o: ${srcdir}/jmr3904-io.c
+ $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) ${srcdir}/jmr3904-io.c -o $@
+cfe.o: ${srcdir}/cfe.c ${srcdir}/cfe_api.h
+ $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) ${srcdir}/cfe.c -o $@
+cfe_api.o: ${srcdir}/cfe_api.c ${srcdir}/cfe_api.h ${srcdir}/cfe_api_int.h
+ $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) ${srcdir}/cfe_api.c -o $@
+cfe_mem.o: ${srcdir}/cfe_mem.c ${srcdir}/cfe_api.h
+ $(CC) -c $(CFLAGS_FOR_TARGET) $(CFLAGS) ${srcdir}/cfe_mem.c -o $@
+
+# cma101 can not be compiled mips16, if a mips16 version is needed then
+# it will have to be built, then this rule can be scrapped, allowing
+# the implicit rule to run.
+cma101.o: ${srcdir}/cma101.c
+ $(CC) -c $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) $(CFLAGS) -mno-mips16 ${srcdir}/cma101.c
+
+# cygmon can not be compiled as mips16 since it uses the syscall instruction
+cygmon.o: ${srcdir}/cygmon.c
+ $(CC) -c $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) $(CFLAGS) -mno-mips16 ${srcdir}/cygmon.c
+
+syscalls.o: ${srcdir}/syscalls.c
+
+# target specific makefile fragment comes in here.
+@target_makefile_frag@
+
+Makefile: Makefile.in config.status @host_makefile_frag_path@ @target_makefile_frag_path@
+ $(SHELL) config.status
+
+config.status: configure
+ $(SHELL) config.status --recheck
Index: lsipmon.S
===================================================================
--- lsipmon.S (nonexistent)
+++ lsipmon.S (revision 829)
@@ -0,0 +1,2 @@
+#define LSI 1
+#include "pmon.S"
lsipmon.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: idt32.ld
===================================================================
--- idt32.ld (nonexistent)
+++ idt32.ld (revision 829)
@@ -0,0 +1,186 @@
+/* The following TEXT start address leaves space for the monitor
+ workspace. This linker script links ISA32r2 programs for use with
+ the simulator. */
+
+ENTRY(_start)
+OUTPUT_ARCH("mips:isa32r2")
+OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips", "elf32-littlemips")
+GROUP(-lc -lidt -lgcc)
+SEARCH_DIR(.)
+__DYNAMIC = 0;
+STARTUP(crt0.o)
+
+/*
+ * Allocate the stack to be at the top of memory, since the stack
+ * grows down
+ */
+PROVIDE (__stack = 0);
+/* PROVIDE (__global = 0); */
+
+/*
+ * Initalize some symbols to be zero so we can reference them in the
+ * crt0 without core dumping. These functions are all optional, but
+ * we do this so we can have our crt0 always use them if they exist.
+ * This is so BSPs work better when using the crt0 installed with gcc.
+ * We have to initalize them twice, so we multiple object file
+ * formats, as some prepend an underscore.
+ */
+PROVIDE (hardware_exit_hook = 0);
+PROVIDE (hardware_hazard_hook = 0);
+PROVIDE (hardware_init_hook = 0);
+PROVIDE (software_init_hook = 0);
+
+SECTIONS
+{
+ . = 0x80020000;
+ .text : {
+ _ftext = . ;
+ PROVIDE (eprol = .);
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ *(.mips16.fn.*)
+ *(.mips16.call.*)
+ }
+ .init : {
+ KEEP (*(.init))
+ }
+ .fini : {
+ KEEP (*(.fini))
+ }
+ .rel.sdata : {
+ PROVIDE (__runtime_reloc_start = .);
+ *(.rel.sdata)
+ PROVIDE (__runtime_reloc_stop = .);
+ }
+ PROVIDE (etext = .);
+ _etext = .;
+
+
+ .eh_frame_hdr : { *(.eh_frame_hdr) }
+ .eh_frame : { KEEP (*(.eh_frame)) }
+ .gcc_except_table : { *(.gcc_except_table) }
+ .jcr : { KEEP (*(.jcr)) }
+ .ctors :
+ {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+
+ KEEP (*crtbegin.o(.ctors))
+
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ }
+
+ .dtors :
+ {
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ }
+
+ . = .;
+ .rodata : {
+ *(.rdata)
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ }
+ _fdata = ALIGN(16);
+ .data : {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ }
+ . = ALIGN(8);
+ _gp = . + 0x8000;
+ __global = _gp;
+ .lit8 : {
+ *(.lit8)
+ }
+ .lit4 : {
+ *(.lit4)
+ }
+ .sdata : {
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ }
+ . = ALIGN(4);
+ PROVIDE (edata = .);
+ _edata = .;
+ _fbss = .;
+ .sbss : {
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ *(.scommon)
+ }
+ .bss : {
+ _bss_start = . ;
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ }
+
+ PROVIDE (end = .);
+ _end = .;
+
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to
+ the beginning of the section so we begin them at 0. */
+
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ .debug_ranges 0 : { *(.debug_ranges) }
+
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+
+ /* Special sections generated by gcc */
+ /* Newer GNU linkers strip by default */
+ .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+ .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+ .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+ .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+ .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+ .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+ .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+ .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
+}
Index: crt0_cygmon.S
===================================================================
--- crt0_cygmon.S (nonexistent)
+++ crt0_cygmon.S (revision 829)
@@ -0,0 +1,173 @@
+/*
+ * crt0_cygmon.S -- Minimal startup file for MIPS targets running Cygmon.
+ *
+ * Copyright (c) 1995, 1996, 1997, 2000 Red Hat, 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.
+ */
+
+/*
+ * This file contains the minimal startup code necessary.
+ * This will not do any hardware initialization. It is assumed that we are talking to Cygmon
+ * and therefore the hardware will be initialized properly.
+ */
+
+#ifdef __mips16
+/* This file contains 32 bit assembly code. */
+ .set nomips16
+#endif
+
+#include "regs.S"
+
+/*
+ * Set up some room for a stack. We just grab a chunk of memory.
+ */
+#define STACK_SIZE 0x4000
+#define GLOBAL_SIZE 0x2000
+
+#define STARTUP_STACK_SIZE 0x0100
+
+ .comm __memsize, 12
+ .comm __lstack, STARTUP_STACK_SIZE
+ .comm __stackbase,4
+
+ .text
+ .align 4
+ /*
+ * Without the following nop, GDB thinks _start is a data variable.
+ * This is probably a bug in GDB in handling a symbol that is at the
+ * start of the .text section.
+ */
+ nop
+
+ .globl _start
+ .ent _start
+_start:
+ .set noreorder
+ la gp, _gp # set the global data pointer, defined in the linker script
+ .end _start
+
+ /*
+ * zero out the bss section.
+ */
+ .globl __memsize
+ .globl get_mem_info .text
+ .globl zerobss
+ .ent zerobss
+zerobss:
+ la v0, _fbss # These variables are defined in the linker script
+ la v1, _end
+
+3:
+ sw zero, 0(v0)
+ bltu v0, v1, 3b
+ addiu v0, v0, 4 # executed in delay slot
+
+ /*
+ * Setup a small stack so we can run some C code,
+ * and get the usable memory size.
+ */
+ la t0, __lstack
+ addiu sp, t0, STARTUP_STACK_SIZE
+ la a0, __memsize
+ jal get_mem_info
+ nop
+
+ /*
+ * Setup the stack pointer --
+ * get_mem_info returns the top of memory, so just use that In
+ * addition, we must subtract 24 bytes for the 3 8 byte
+ * arguments to main, in case main wants to write them back to
+ * the stack. The caller is supposed to allocate stack space
+ * for parameters in registers in the old MIPS ABIs. We must
+ * do this even though we aren't passing arguments, because
+ * main might be declared to have them.
+ * Some ports need a larger alignment for the stack, so we
+ * subtract 32, which satisifes the stack for the arguments and
+ * keeps the stack pointer better aligned.
+ */
+ subu v0, v0, 32
+ move sp, v0
+
+ sw sp, __stackbase # keep this for future ref
+ .end zerobss
+
+ /*
+ * initialize target specific stuff. Only execute these
+ * functions it they exist.
+ */
+ .globl hardware_init_hook .text
+ .globl software_init_hook .text
+ .globl __do_global_dtors .text
+ .globl atexit .text
+ .globl exit .text
+ .globl init
+ .ent init
+init:
+ la t9, hardware_init_hook # init the hardware if needed
+ beq t9, zero, 6f
+ nop
+ jal t9
+ nop
+6:
+ la t9, software_init_hook # init the software if needed
+ beq t9, zero, 7f
+ nop
+ jal t9
+ nop
+7:
+ la a0, __do_global_dtors
+ jal atexit
+ nop
+
+#ifdef GCRT0
+ .globl _ftext
+ .globl _extext
+ la a0, _ftext
+ la a1, _etext
+ jal monstartup
+ nop
+#endif
+
+ move a0,zero # set argc to 0
+ jal main # call the program start function
+ nop
+
+ # fall through to the "exit" routine
+ jal exit # call libc exit to run the G++
+ # destructors
+ move a0, v0 # pass through the exit code
+ .end init
+
+/*
+ * _exit -- Exit from the application. Normally we cause a user trap
+ * to return to the ROM monitor for another run. NOTE: This is
+ * the only other routine we provide in the crt0.o object, since
+ * it may be tied to the "_start" routine. It also allows
+ * executables that contain a complete world to be linked with
+ * just the crt0.o object.
+ */
+ .globl _exit
+ .ent _exit
+_exit:
+7:
+#ifdef GCRT0
+ jal _mcleanup
+ nop
+#endif
+ # Cygmon expects a break 5
+ break 5
+ nop
+ b 7b # loop back just in-case
+ nop
+ .end _exit
+
+/* EOF crt0.S */
crt0_cygmon.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: cfe_api_int.h
===================================================================
--- cfe_api_int.h (nonexistent)
+++ cfe_api_int.h (revision 829)
@@ -0,0 +1,168 @@
+/* From: CFE Id: cfe_api_int.h,v 1.21 2002/07/09 23:29:11 cgd Exp $ */
+
+/*
+ * Copyright 2000, 2001, 2002
+ * Broadcom Corporation. All rights reserved.
+ *
+ * This software is furnished under license and may be used and copied only
+ * in accordance with the following terms and conditions. Subject to these
+ * conditions, you may download, copy, install, use, modify and distribute
+ * modified or unmodified copies of this software in source and/or binary
+ * form. No title or ownership is transferred hereby.
+ *
+ * 1) Any source code used, modified or distributed must reproduce and
+ * retain this copyright notice and list of conditions as they appear in
+ * the source file.
+ *
+ * 2) No right is granted to use any trade name, trademark, or logo of
+ * Broadcom Corporation. The "Broadcom Corporation" name may not be
+ * used to endorse or promote products derived from this software
+ * without the prior written permission of Broadcom Corporation.
+ *
+ * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+ * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE
+ * FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE
+ * LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/* *********************************************************************
+ *
+ * Broadcom Common Firmware Environment (CFE)
+ *
+ * Device function prototypes File: cfe_api_int.h
+ *
+ * This header defines all internal types and macros for the
+ * library. This is stuff that's not exported to an app
+ * using the library.
+ *
+ * Authors: Mitch Lichtenberg, Chris Demetriou
+ *
+ ********************************************************************* */
+
+#ifndef CFE_API_INT_H
+#define CFE_API_INT_H
+
+/* *********************************************************************
+ * Constants
+ ********************************************************************* */
+
+#define CFE_CMD_FW_GETINFO 0
+#define CFE_CMD_FW_RESTART 1
+#define CFE_CMD_FW_BOOT 2
+#define CFE_CMD_FW_CPUCTL 3
+#define CFE_CMD_FW_GETTIME 4
+#define CFE_CMD_FW_MEMENUM 5
+#define CFE_CMD_FW_FLUSHCACHE 6
+
+#define CFE_CMD_DEV_GETHANDLE 9
+#define CFE_CMD_DEV_ENUM 10
+#define CFE_CMD_DEV_OPEN 11
+#define CFE_CMD_DEV_INPSTAT 12
+#define CFE_CMD_DEV_READ 13
+#define CFE_CMD_DEV_WRITE 14
+#define CFE_CMD_DEV_IOCTL 15
+#define CFE_CMD_DEV_CLOSE 16
+#define CFE_CMD_DEV_GETINFO 17
+
+#define CFE_CMD_ENV_ENUM 20
+#define CFE_CMD_ENV_GET 22
+#define CFE_CMD_ENV_SET 23
+#define CFE_CMD_ENV_DEL 24
+
+#define CFE_CMD_MAX 32
+
+#define CFE_CMD_VENDOR_USE 0x8000 /* codes above this are for customer use */
+
+/* *********************************************************************
+ * Structures
+ ********************************************************************* */
+
+typedef uint64_t cfe_xuint_t;
+typedef int64_t cfe_xint_t;
+typedef int64_t cfe_xptr_t;
+
+typedef struct xiocb_buffer_s {
+ cfe_xuint_t buf_offset; /* offset on device (bytes) */
+ cfe_xptr_t buf_ptr; /* pointer to a buffer */
+ cfe_xuint_t buf_length; /* length of this buffer */
+ cfe_xuint_t buf_retlen; /* returned length (for read ops) */
+ cfe_xuint_t buf_ioctlcmd; /* IOCTL command (used only for IOCTLs) */
+} xiocb_buffer_t;
+
+#define buf_devflags buf_ioctlcmd /* returned device info flags */
+
+typedef struct xiocb_inpstat_s {
+ cfe_xuint_t inp_status; /* 1 means input available */
+} xiocb_inpstat_t;
+
+typedef struct xiocb_envbuf_s {
+ cfe_xint_t enum_idx; /* 0-based enumeration index */
+ cfe_xptr_t name_ptr; /* name string buffer */
+ cfe_xint_t name_length; /* size of name buffer */
+ cfe_xptr_t val_ptr; /* value string buffer */
+ cfe_xint_t val_length; /* size of value string buffer */
+} xiocb_envbuf_t;
+
+typedef struct xiocb_cpuctl_s {
+ cfe_xuint_t cpu_number; /* cpu number to control */
+ cfe_xuint_t cpu_command; /* command to issue to CPU */
+ cfe_xuint_t start_addr; /* CPU start address */
+ cfe_xuint_t gp_val; /* starting GP value */
+ cfe_xuint_t sp_val; /* starting SP value */
+ cfe_xuint_t a1_val; /* starting A1 value */
+} xiocb_cpuctl_t;
+
+typedef struct xiocb_time_s {
+ cfe_xint_t ticks; /* current time in ticks */
+} xiocb_time_t;
+
+typedef struct xiocb_exitstat_s {
+ cfe_xint_t status;
+} xiocb_exitstat_t;
+
+typedef struct xiocb_meminfo_s {
+ cfe_xint_t mi_idx; /* 0-based enumeration index */
+ cfe_xint_t mi_type; /* type of memory block */
+ cfe_xuint_t mi_addr; /* physical start address */
+ cfe_xuint_t mi_size; /* block size */
+} xiocb_meminfo_t;
+
+typedef struct xiocb_fwinfo_s {
+ cfe_xint_t fwi_version; /* major, minor, eco version */
+ cfe_xint_t fwi_totalmem; /* total installed mem */
+ cfe_xint_t fwi_flags; /* various flags */
+ cfe_xint_t fwi_boardid; /* board ID */
+ cfe_xint_t fwi_bootarea_va; /* VA of boot area */
+ cfe_xint_t fwi_bootarea_pa; /* PA of boot area */
+ cfe_xint_t fwi_bootarea_size; /* size of boot area */
+ cfe_xint_t fwi_reserved1;
+ cfe_xint_t fwi_reserved2;
+ cfe_xint_t fwi_reserved3;
+} xiocb_fwinfo_t;
+
+typedef struct cfe_xiocb_s {
+ cfe_xuint_t xiocb_fcode; /* IOCB function code */
+ cfe_xint_t xiocb_status; /* return status */
+ cfe_xint_t xiocb_handle; /* file/device handle */
+ cfe_xuint_t xiocb_flags; /* flags for this IOCB */
+ cfe_xuint_t xiocb_psize; /* size of parameter list */
+ union {
+ xiocb_buffer_t xiocb_buffer; /* buffer parameters */
+ xiocb_inpstat_t xiocb_inpstat; /* input status parameters */
+ xiocb_envbuf_t xiocb_envbuf; /* environment function parameters */
+ xiocb_cpuctl_t xiocb_cpuctl; /* CPU control parameters */
+ xiocb_time_t xiocb_time; /* timer parameters */
+ xiocb_meminfo_t xiocb_meminfo; /* memory arena info parameters */
+ xiocb_fwinfo_t xiocb_fwinfo; /* firmware information */
+ xiocb_exitstat_t xiocb_exitstat; /* Exit Status */
+ } plist;
+} cfe_xiocb_t;
+
+#endif /* CFE_API_INT_H */
cfe_api_int.h
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: crt0_cfe.S
===================================================================
--- crt0_cfe.S (nonexistent)
+++ crt0_cfe.S (revision 829)
@@ -0,0 +1,263 @@
+/*
+ * crt0_cfe.S -- Runtime startup for MIPS targets running CFE.
+ *
+ * Copyright 2003
+ * Broadcom Corporation. All rights reserved.
+ *
+ * This software is furnished under license and may be used and copied only
+ * in accordance with the following terms and conditions. Subject to these
+ * conditions, you may download, copy, install, use, modify and distribute
+ * modified or unmodified copies of this software in source and/or binary
+ * form. No title or ownership is transferred hereby.
+ *
+ * 1) Any source code used, modified or distributed must reproduce and
+ * retain this copyright notice and list of conditions as they appear in
+ * the source file.
+ *
+ * 2) No right is granted to use any trade name, trademark, or logo of
+ * Broadcom Corporation. The "Broadcom Corporation" name may not be
+ * used to endorse or promote products derived from this software
+ * without the prior written permission of Broadcom Corporation.
+ *
+ * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+ * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE
+ * FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE
+ * LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Derived from crt0_cygmon.S:
+ *
+ * Copyright (c) 1995, 1996, 1997, 2000 Red Hat, 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.
+ */
+
+/*
+ * This file does minimal runtime startup for code running under
+ * CFE firmware.
+ *
+ * It does minimal hardware initialization. In particular
+ * it sets Status:FR to match the requested floating point
+ * mode.
+ *
+ * It is meant to be linked with the other files provided by libcfe.a,
+ * and calls routines in those files.
+ */
+
+#ifdef __mips16
+/* This file contains 32 bit assembly code. */
+ .set nomips16
+#endif
+#ifdef __mips_embedded_pic
+# error -membedded-pic is not supported.
+#endif
+
+#include "regs.S"
+
+/*
+ * Set up some room for a stack. We just grab a chunk of memory.
+ */
+#define STARTUP_STACK_SIZE (1 * 1024)
+
+ .comm _lstack, STARTUP_STACK_SIZE
+
+ .text
+ .align 4
+
+ /*
+ * Without the following nop, GDB thinks _start is a data variable.
+ * This is probably a bug in GDB in handling a symbol that is at the
+ * start of the .text section.
+ */
+ nop
+
+
+ /*
+ * On entry, the following values have been passed in registers
+ * by the firmware:
+ *
+ * a0: firmware handle
+ * a1: zero (unused)
+ * a2: firmware callback entrypoint
+ * a3: CFE entrypoint seal (unused)
+ *
+ * They must be preserved until the CFE entrypoint and handle
+ * are passed to __libcfe_init().
+ */
+
+ .globl _start
+ .ent _start
+_start:
+ .set noreorder
+ /* Set the global data pointer, defined in the linker script. */
+ la gp, _gp
+
+#ifndef __mips_soft_float
+ /* If compiled for hard float, set the FPU mode based on the
+ compilation flags. Note that this assumes that enough code
+ will run after the mtc0 to clear any hazards. */
+ mfc0 t0, C0_SR
+ or t0, t0, (SR_CU1 | SR_FR)
+#if (__mips_fpr == 32)
+ xor t0, t0, SR_FR /* If 32-bit FP mode, clear FR. */
+#endif
+ mtc0 t0, C0_SR
+#endif
+ .end _start
+
+ /*
+ * zero out the bss section.
+ */
+ .globl _zerobss
+ .ent _zerobss
+_zerobss:
+ /* These variables are defined in the linker script. */
+ la v0, _fbss
+ la v1, _end
+
+3:
+ sw zero, 0(v0)
+ bltu v0, v1, 3b
+ addiu v0, v0, 4 /* Delay slot. */
+ .end _zerobss
+
+ /*
+ * Setup a small stack so we can run some C code, and do
+ * the library initialization. (32 bytes are saved for
+ * the argument registers' stack slots.)
+ */
+ .globl _stackinit
+ .ent _stackinit
+_stackinit:
+ la t0, _lstack
+ addiu sp, t0, (STARTUP_STACK_SIZE - 32)
+ jal __libcfe_init
+ nop
+
+ /*
+ * Setup the stack pointer --
+ * __libcfe_init() returns the value to be used as the top of
+ * the program's stack.
+ *
+ * We subtract 32 bytes for the 4 argument registers, in case
+ * main() wants to write them back to the stack. The caller
+ * allocates stack space for parameters in the old MIPS ABIs.
+ * We must do this even though we aren't passing arguments,
+ * because main might be declared to have them.)
+ *
+ * We subtract 32 more bytes for the argv/envp setup for the
+ * call to main().
+ */
+ subu v0, v0, 64
+ move sp, v0
+
+ .end _stackinit
+
+ /*
+ * initialize target specific stuff. Only execute these
+ * functions it they exist.
+ */
+ .globl hardware_init_hook .text
+ .globl software_init_hook .text
+ .type _fini,@function
+ .type _init,@function
+ .globl atexit .text
+ .globl exit .text
+ .globl _crt0init
+ .ent _crt0init
+_crt0init:
+ la t9, hardware_init_hook # init the hardware if needed
+ beq t9, zero, 6f
+ nop
+ jal t9
+ nop
+6:
+ la t9, software_init_hook # init the software if needed
+ beq t9, zero, 7f
+ nop
+ jal t9
+ nop
+7:
+ la a0, _fini
+ jal atexit
+ nop
+
+#ifdef GCRT0
+ .globl _ftext
+ .globl _extext
+ la a0, _ftext
+ la a1, _etext
+ jal monstartup
+ nop
+#endif
+
+ jal _init # run global constructors
+ nop
+
+ addiu a1,sp,32 # argv = sp + 32
+ addiu a2,sp,40 # envp = sp + 40
+#if __mips64
+ sd zero,(a1) # argv[argc] = 0
+ sd zero,(a2) # envp[0] = 0
+#else
+ sw zero,(a1)
+ sw zero,(a2)
+#endif
+
+ jal main # call the program start function
+ move a0,zero # set argc to 0; delay slot.
+
+ # fall through to the "exit" routine
+ jal exit # call libc exit to run the G++
+ # destructors
+ move a0, v0 # pass through the exit code
+ .end _crt0init
+
+/*
+ * _exit -- Exit from the application. This is provided in this file because
+ * program exit should shut down profiling (if GCRT0 is defined),
+ * and only this file is compiled with GCRT0 defined.
+ */
+ .globl _exit
+ .ent _exit
+_exit:
+7:
+ move s0, a0 /* Save in case we loop. */
+
+#ifdef GCRT0
+ jal _mcleanup
+ nop
+#endif
+
+ la t0, hardware_exit_hook
+ beq t0,zero,1f
+ nop
+ jal t0
+ nop
+
+1:
+ /* Call into the library to do the heavy lifting. */
+ jal __libcfe_exit
+ move a0, s0 /* Delay slot. */
+
+ b 7b /* Loop back just in case. */
+ nop
+ .end _exit
+
+/* EOF crt0_cfe.S */
crt0_cfe.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: idt64.ld
===================================================================
--- idt64.ld (nonexistent)
+++ idt64.ld (revision 829)
@@ -0,0 +1,187 @@
+/* The following TEXT start address leaves space for the monitor
+ workspace. This linker script links ISA64r2 programs for use with the
+ simulator. We set the ISA explicitly so that we can link objects of
+ different ISAs that are subsets of ISA64r2 but are not extensions of
+ each other (e.g., MIPS32r2 and MIPS64). */
+
+ENTRY(_start)
+OUTPUT_ARCH("mips:isa64r2")
+OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips", "elf32-littlemips")
+GROUP(-lc -lidt -lgcc)
+SEARCH_DIR(.)
+__DYNAMIC = 0;
+STARTUP(crt0.o)
+
+/*
+ * Allocate the stack to be at the top of memory, since the stack
+ * grows down
+ */
+PROVIDE (__stack = 0);
+/* PROVIDE (__global = 0); */
+
+/*
+ * Initalize some symbols to be zero so we can reference them in the
+ * crt0 without core dumping. These functions are all optional, but
+ * we do this so we can have our crt0 always use them if they exist.
+ * This is so BSPs work better when using the crt0 installed with gcc.
+ * We have to initalize them twice, so we multiple object file
+ * formats, as some prepend an underscore.
+ */
+PROVIDE (hardware_exit_hook = 0);
+PROVIDE (hardware_hazard_hook = 0);
+PROVIDE (hardware_init_hook = 0);
+PROVIDE (software_init_hook = 0);
+
+SECTIONS
+{
+ . = 0x80020000;
+ .text : {
+ _ftext = . ;
+ PROVIDE (eprol = .);
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ *(.mips16.fn.*)
+ *(.mips16.call.*)
+ }
+ .init : {
+ KEEP (*(.init))
+ }
+ .fini : {
+ KEEP (*(.fini))
+ }
+ .rel.sdata : {
+ PROVIDE (__runtime_reloc_start = .);
+ *(.rel.sdata)
+ PROVIDE (__runtime_reloc_stop = .);
+ }
+ PROVIDE (etext = .);
+ _etext = .;
+
+ .eh_frame_hdr : { *(.eh_frame_hdr) }
+ .eh_frame : { KEEP (*(.eh_frame)) }
+ .gcc_except_table : { *(.gcc_except_table) }
+ .jcr : { KEEP (*(.jcr)) }
+ .ctors :
+ {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+
+ KEEP (*crtbegin.o(.ctors))
+
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ }
+
+ .dtors :
+ {
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ }
+
+ . = .;
+ .rodata : {
+ *(.rdata)
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ }
+ _fdata = ALIGN(16);
+ .data : {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ }
+ . = ALIGN(8);
+ _gp = . + 0x8000;
+ __global = _gp;
+ .lit8 : {
+ *(.lit8)
+ }
+ .lit4 : {
+ *(.lit4)
+ }
+ .sdata : {
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ }
+ . = ALIGN(4);
+ PROVIDE (edata = .);
+ _edata = .;
+ _fbss = .;
+ .sbss : {
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ *(.scommon)
+ }
+ .bss : {
+ _bss_start = . ;
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ }
+
+ PROVIDE (end = .);
+ _end = .;
+
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to
+ the beginning of the section so we begin them at 0. */
+
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ .debug_ranges 0 : { *(.debug_ranges) }
+
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+
+ /* Special sections generated by gcc */
+ /* Newer GNU linkers strip by default */
+ .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+ .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+ .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+ .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+ .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+ .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+ .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+ .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
+}
Index: dtor.C
===================================================================
--- dtor.C (nonexistent)
+++ dtor.C (revision 829)
@@ -0,0 +1,25 @@
+#include
+
+extern "C" void print (char *, ...);
+
+class foo
+{
+public:
+ foo () { print ("ctor\n"); }
+ ~foo () { print ("dtor\n"); }
+};
+
+foo x;
+
+main ()
+{
+ outbyte ('&');
+ outbyte ('@');
+ outbyte ('$');
+ outbyte ('%');
+ print ("FooBar\r\n");
+
+ /* whew, we made it */
+ print ("\r\nDone...\r\n");
+ fflush(stdout);
+}
dtor.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: jmr3904dram-java.ld
===================================================================
--- jmr3904dram-java.ld (nonexistent)
+++ jmr3904dram-java.ld (revision 829)
@@ -0,0 +1,138 @@
+/* Linker script forJMR 3904 board using Java + qthreads */
+
+ENTRY(_start)
+STARTUP(crt0.o)
+OUTPUT_ARCH("mips:3000")
+OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-littlemips")
+GROUP(-lc -ljmr3904 -lgcc -lgcjcoop)
+SEARCH_DIR(.)
+__DYNAMIC = 0;
+
+PROVIDE (_mem_size = 0x100000); /* JMR3904 comes as standard with 512k of RAM */
+ /* but this is 1 Mb */
+
+/* Set the size of the stack for Java with qthreads. */
+PROVIDE (_Jv_QthreadsStackSize = 0x10000);
+
+/* PROVIDE (__global = 0); */
+
+/*
+ * Initalize some symbols to be zero so we can reference them in the
+ * crt0 without core dumping. These functions are all optional, but
+ * we do this so we can have our crt0 always use them if they exist.
+ * This is so BSPs work better when using the crt0 installed with gcc.
+ * We have to initalize them twice, so we multiple object file
+ * formats, as some prepend an underscore.
+ */
+PROVIDE (hardware_exit_hook = 0);
+PROVIDE (hardware_hazard_hook = 0);
+PROVIDE (hardware_init_hook = 0);
+PROVIDE (software_init_hook = 0);
+
+SECTIONS
+{
+ /* Load everything into DRAM, except for the stack. Put stack in SRAM */
+ . = 0x88000000;
+ /* This is NOT the address which fits with the monitor from jmr. */
+ /* It fits the Cygmon ROMS */
+ .text : {
+ _ftext = . ;
+ KEEP (*(.init))
+ eprol = .;
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ *(.mips16.fn.*)
+ *(.mips16.call.*)
+ PROVIDE (__runtime_reloc_start = .);
+ *(.rel.sdata)
+ PROVIDE (__runtime_reloc_stop = .);
+ KEEP (*(.fini))
+ etext = .;
+ _etext = .;
+ }
+ . = .;
+ .rdata : {
+ *(.rdata)
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ }
+ _fdata = ALIGN(16);
+ .data : {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ CONSTRUCTORS
+ }
+ . = ALIGN(8);
+ _gp = . + 0x8000;
+ __global = _gp;
+ .lit8 : {
+ *(.lit8)
+ }
+ .lit4 : {
+ *(.lit4)
+ }
+ .sdata : {
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ }
+ . = ALIGN(4);
+ edata = .;
+ _edata = .;
+ _fbss = .;
+ .sbss : {
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ *(.scommon)
+ }
+ .bss : {
+ _bss_start = . ;
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ }
+
+ end = .;
+ _end = .;
+
+ /* Put stack in SRAM (8 Kb); this size is the same as the stack from
+ the original script (when everything was in SRAM). */
+ __stack = 0x8000A000;
+
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to
+ the beginning of the section so we begin them at 0. */
+
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ .debug_ranges 0 : { *(.debug_ranges) }
+
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+}
Index: idtmon.S
===================================================================
--- idtmon.S (nonexistent)
+++ idtmon.S (revision 829)
@@ -0,0 +1,46 @@
+/*
+ * idtmon.S -- lo-level entry points into IDT monitor.
+ *
+ * Copyright (c) 1996 Cygnus Support
+ *
+ * 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.
+ */
+
+#ifdef __mips16
+/* This file contains 32 bit assembly code. */
+ .set nomips16
+#endif
+
+#include "regs.S"
+
+ .text
+ .align 2
+
+/* Provide named functions for entry into the IDT monitor: */
+#define INDIRECT(name,index) \
+ .globl name; \
+ .ent name; \
+name: la $2,+(0xbfc00000+((index)*8)); \
+ j $2; \
+ .end name
+
+/* The following magic numbers are for the slots into the IDT monitor: */
+INDIRECT(open,6)
+INDIRECT(read,7)
+INDIRECT(write,8)
+INDIRECT(close,10)
+INDIRECT(inbyte,11)
+INDIRECT(outbyte,12)
+INDIRECT(mon_printf,16)
+INDIRECT(_flush_cache,28)
+INDIRECT(get_mem_info,55) /* expects pointer to three word vector */
+
+/* EOF idtmon.S */
idtmon.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: cfe_error.h
===================================================================
--- cfe_error.h (nonexistent)
+++ cfe_error.h (revision 829)
@@ -0,0 +1,101 @@
+/* From: CFE Id: cfe_error.h,v 1.2 2002/07/09 19:37:52 cgd Exp $ */
+
+/*
+ * Copyright 2000, 2001, 2002
+ * Broadcom Corporation. All rights reserved.
+ *
+ * This software is furnished under license and may be used and copied only
+ * in accordance with the following terms and conditions. Subject to these
+ * conditions, you may download, copy, install, use, modify and distribute
+ * modified or unmodified copies of this software in source and/or binary
+ * form. No title or ownership is transferred hereby.
+ *
+ * 1) Any source code used, modified or distributed must reproduce and
+ * retain this copyright notice and list of conditions as they appear in
+ * the source file.
+ *
+ * 2) No right is granted to use any trade name, trademark, or logo of
+ * Broadcom Corporation. The "Broadcom Corporation" name may not be
+ * used to endorse or promote products derived from this software
+ * without the prior written permission of Broadcom Corporation.
+ *
+ * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+ * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE
+ * FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE
+ * LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/* *********************************************************************
+ *
+ * Broadcom Common Firmware Environment (CFE)
+ *
+ * Error codes File: cfe_error.h
+ *
+ * CFE's global error code list is here.
+ *
+ * Author: Mitch Lichtenberg
+ *
+ ********************************************************************* */
+
+
+#define CFE_OK 0
+#define CFE_ERR -1 /* generic error */
+#define CFE_ERR_INV_COMMAND -2
+#define CFE_ERR_EOF -3
+#define CFE_ERR_IOERR -4
+#define CFE_ERR_NOMEM -5
+#define CFE_ERR_DEVNOTFOUND -6
+#define CFE_ERR_DEVOPEN -7
+#define CFE_ERR_INV_PARAM -8
+#define CFE_ERR_ENVNOTFOUND -9
+#define CFE_ERR_ENVREADONLY -10
+
+#define CFE_ERR_NOTELF -11
+#define CFE_ERR_NOT32BIT -12
+#define CFE_ERR_WRONGENDIAN -13
+#define CFE_ERR_BADELFVERS -14
+#define CFE_ERR_NOTMIPS -15
+#define CFE_ERR_BADELFFMT -16
+#define CFE_ERR_BADADDR -17
+
+#define CFE_ERR_FILENOTFOUND -18
+#define CFE_ERR_UNSUPPORTED -19
+
+#define CFE_ERR_HOSTUNKNOWN -20
+
+#define CFE_ERR_TIMEOUT -21
+
+#define CFE_ERR_PROTOCOLERR -22
+
+#define CFE_ERR_NETDOWN -23
+#define CFE_ERR_NONAMESERVER -24
+
+#define CFE_ERR_NOHANDLES -25
+#define CFE_ERR_ALREADYBOUND -26
+
+#define CFE_ERR_CANNOTSET -27
+#define CFE_ERR_NOMORE -28
+#define CFE_ERR_BADFILESYS -29
+#define CFE_ERR_FSNOTAVAIL -30
+
+#define CFE_ERR_INVBOOTBLOCK -31
+#define CFE_ERR_WRONGDEVTYPE -32
+#define CFE_ERR_BBCHECKSUM -33
+#define CFE_ERR_BOOTPROGCHKSUM -34
+
+#define CFE_ERR_LDRNOTAVAIL -35
+
+#define CFE_ERR_NOTREADY -36
+
+#define CFE_ERR_GETMEM -37
+#define CFE_ERR_SETMEM -38
+
+#define CFE_ERR_NOTCONN -39
+#define CFE_ERR_ADDRINUSE -40
cfe_error.h
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: regs.S
===================================================================
--- regs.S (nonexistent)
+++ regs.S (revision 829)
@@ -0,0 +1,156 @@
+/*
+ * regs.S -- standard MIPS register names.
+ *
+ * Copyright (c) 1995 Cygnus Support
+ *
+ * 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.
+ */
+
+/* Standard MIPS register names: */
+#define zero $0
+#define z0 $0
+#define v0 $2
+#define v1 $3
+#define a0 $4
+#define a1 $5
+#define a2 $6
+#define a3 $7
+#define t0 $8
+#define t1 $9
+#define t2 $10
+#define t3 $11
+#define t4 $12
+#define t5 $13
+#define t6 $14
+#define t7 $15
+#define s0 $16
+#define s1 $17
+#define s2 $18
+#define s3 $19
+#define s4 $20
+#define s5 $21
+#define s6 $22
+#define s7 $23
+#define t8 $24
+#define t9 $25
+#define k0 $26 /* kernel private register 0 */
+#define k1 $27 /* kernel private register 1 */
+#define gp $28 /* global data pointer */
+#define sp $29 /* stack-pointer */
+#define fp $30 /* frame-pointer */
+#define ra $31 /* return address */
+#define pc $pc /* pc, used on mips16 */
+
+#define fp0 $f0
+#define fp1 $f1
+
+/* Useful memory constants: */
+#ifndef __mips64
+#define K0BASE 0x80000000
+#define K1BASE 0xA0000000
+#define K0BASE_ADDR ((char *)K0BASE)
+#define K1BASE_ADDR ((char *)K1BASE)
+#else
+#define K0BASE 0xFFFFFFFF80000000
+#define K1BASE 0xFFFFFFFFA0000000
+#define K0BASE_ADDR ((char *)0xFFFFFFFF80000000LL)
+#define K1BASE_ADDR ((char *)0xFFFFFFFFA0000000LL)
+#endif
+
+#define PHYS_TO_K1(a) ((unsigned)(a) | K1BASE)
+
+/* Standard Co-Processor 0 registers */
+#define C0_COUNT $9 /* Count Register */
+#define C0_SR $12 /* Status Register */
+#define C0_CAUSE $13 /* last exception description */
+#define C0_EPC $14 /* Exception error address */
+#define C0_PRID $15 /* Processor Revision ID */
+#define C0_CONFIG $16 /* CPU configuration */
+
+/* Standard Processor Revision ID Register field offsets */
+#define PR_IMP 8
+
+/* Standard Config Register field offsets */
+#define CR_DB 4
+#define CR_IB 5
+#define CR_DC 6 /* NOTE v4121 semantics != 43,5xxx semantics */
+#define CR_IC 9 /* NOTE v4121 semantics != 43,5xxx semantics */
+#define CR_SC 17
+#define CR_SS 20
+#define CR_SB 22
+
+
+/* Standard Status Register bitmasks: */
+#define SR_CU1 0x20000000 /* Mark CP1 as usable */
+#define SR_FR 0x04000000 /* Enable MIPS III FP registers */
+#define SR_BEV 0x00400000 /* Controls location of exception vectors */
+#define SR_PE 0x00100000 /* Mark soft reset (clear parity error) */
+
+#define SR_KX 0x00000080 /* Kernel extended addressing enabled */
+#define SR_SX 0x00000040 /* Supervisor extended addressing enabled */
+#define SR_UX 0x00000020 /* User extended addressing enabled */
+
+/* Standard (R4000) cache operations. Taken from "MIPS R4000
+ Microprocessor User's Manual" 2nd edition: */
+
+#define CACHE_I (0) /* primary instruction */
+#define CACHE_D (1) /* primary data */
+#define CACHE_SI (2) /* secondary instruction */
+#define CACHE_SD (3) /* secondary data (or combined instruction/data) */
+
+#define INDEX_INVALIDATE (0) /* also encodes WRITEBACK if CACHE_D or CACHE_SD */
+#define INDEX_LOAD_TAG (1)
+#define INDEX_STORE_TAG (2)
+#define CREATE_DIRTY_EXCLUSIVE (3) /* CACHE_D and CACHE_SD only */
+#define HIT_INVALIDATE (4)
+#define CACHE_FILL (5) /* CACHE_I only */
+#define HIT_WRITEBACK_INVALIDATE (5) /* CACHE_D and CACHE_SD only */
+#define HIT_WRITEBACK (6) /* CACHE_I, CACHE_D and CACHE_SD only */
+#define HIT_SET_VIRTUAL (7) /* CACHE_SI and CACHE_SD only */
+
+#define BUILD_CACHE_OP(o,c) (((o) << 2) | (c))
+
+/* Individual cache operations: */
+#define INDEX_INVALIDATE_I BUILD_CACHE_OP(INDEX_INVALIDATE,CACHE_I)
+#define INDEX_WRITEBACK_INVALIDATE_D BUILD_CACHE_OP(INDEX_INVALIDATE,CACHE_D)
+#define INDEX_INVALIDATE_SI BUILD_CACHE_OP(INDEX_INVALIDATE,CACHE_SI)
+#define INDEX_WRITEBACK_INVALIDATE_SD BUILD_CACHE_OP(INDEX_INVALIDATE,CACHE_SD)
+
+#define INDEX_LOAD_TAG_I BUILD_CACHE_OP(INDEX_LOAD_TAG,CACHE_I)
+#define INDEX_LOAD_TAG_D BUILD_CACHE_OP(INDEX_LOAD_TAG,CACHE_D)
+#define INDEX_LOAD_TAG_SI BUILD_CACHE_OP(INDEX_LOAD_TAG,CACHE_SI)
+#define INDEX_LOAD_TAG_SD BUILD_CACHE_OP(INDEX_LOAD_TAG,CACHE_SD)
+
+#define INDEX_STORE_TAG_I BUILD_CACHE_OP(INDEX_STORE_TAG,CACHE_I)
+#define INDEX_STORE_TAG_D BUILD_CACHE_OP(INDEX_STORE_TAG,CACHE_D)
+#define INDEX_STORE_TAG_SI BUILD_CACHE_OP(INDEX_STORE_TAG,CACHE_SI)
+#define INDEX_STORE_TAG_SD BUILD_CACHE_OP(INDEX_STORE_TAG,CACHE_SD)
+
+#define CREATE_DIRTY_EXCLUSIVE_D BUILD_CACHE_OP(CREATE_DIRTY_EXCLUSIVE,CACHE_D)
+#define CREATE_DIRTY_EXCLUSIVE_SD BUILD_CACHE_OP(CREATE_DIRTY_EXCLUSIVE,CACHE_SD)
+
+#define HIT_INVALIDATE_I BUILD_CACHE_OP(HIT_INVALIDATE,CACHE_I)
+#define HIT_INVALIDATE_D BUILD_CACHE_OP(HIT_INVALIDATE,CACHE_D)
+#define HIT_INVALIDATE_SI BUILD_CACHE_OP(HIT_INVALIDATE,CACHE_SI)
+#define HIT_INVALIDATE_SD BUILD_CACHE_OP(HIT_INVALIDATE,CACHE_SD)
+
+#define CACHE_FILL_I BUILD_CACHE_OP(CACHE_FILL,CACHE_I)
+#define HIT_WRITEBACK_INVALIDATE_D BUILD_CACHE_OP(HIT_WRITEBACK_INVALIDATE,CACHE_D)
+#define HIT_WRITEBACK_INVALIDATE_SD BUILD_CACHE_OP(HIT_WRITEBACK_INVALIDATE,CACHE_SD)
+
+#define HIT_WRITEBACK_I BUILD_CACHE_OP(HIT_WRITEBACK,CACHE_I)
+#define HIT_WRITEBACK_D BUILD_CACHE_OP(HIT_WRITEBACK,CACHE_D)
+#define HIT_WRITEBACK_SD BUILD_CACHE_OP(HIT_WRITEBACK,CACHE_SD)
+
+#define HIT_SET_VIRTUAL_SI BUILD_CACHE_OP(HIT_SET_VIRTUAL,CACHE_SI)
+#define HIT_SET_VIRTUAL_SD BUILD_CACHE_OP(HIT_SET_VIRTUAL,CACHE_SD)
+
+/*> EOF regs.S <*/
regs.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: cma101.c
===================================================================
--- cma101.c (nonexistent)
+++ cma101.c (revision 829)
@@ -0,0 +1,314 @@
+/*
+ * cma101.c -- lo-level support for Cogent CMA101 development board.
+ *
+ * Copyright (c) 1996, 2001, 2002 Cygnus Support
+ *
+ * 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.
+ */
+
+#ifdef __mips16
+/* The assembler portions of this file need to be re-written to
+ support mips16, if and when that seems useful.
+*/
+#error cma101.c can not be compiled -mips16
+#endif
+
+
+#include /* standard ANSI time routines */
+
+/* Normally these would appear in a header file for external
+ use. However, we are only building a simple example world at the
+ moment: */
+
+#include "regs.S"
+
+#if defined(MIPSEB)
+#define BYTEREG(b,o) ((volatile unsigned char *)(PHYS_TO_K1((b) + (o) + 7)))
+#endif /* MIPSEB */
+#if defined(MIPSEL)
+#define BYTEREG(b,o) ((volatile unsigned char *)(PHYS_TO_K1((b) + (o))))
+#endif /* MIPSEL */
+
+/* I/O addresses: */
+#define RTCLOCK_BASE (0x0E800000) /* Mk48T02 NVRAM/RTC */
+#define UART_BASE (0x0E900000) /* NS16C552 DUART */
+#define LCD_BASE (0x0EB00000) /* Alphanumeric display */
+
+/* LCD panel manifests: */
+#define LCD_DATA BYTEREG(LCD_BASE,0)
+#define LCD_CMD BYTEREG(LCD_BASE,8)
+
+#define LCD_STAT_BUSY (0x80)
+#define LCD_SET_DDADDR (0x80)
+
+/* RTC manifests */
+/* The lo-offsets are the NVRAM locations (0x7F8 bytes) */
+#define RTC_CONTROL BYTEREG(RTCLOCK_BASE,0x3FC0)
+#define RTC_SECS BYTEREG(RTCLOCK_BASE,0x3FC8)
+#define RTC_MINS BYTEREG(RTCLOCK_BASE,0x3FD0)
+#define RTC_HOURS BYTEREG(RTCLOCK_BASE,0x3FD8)
+#define RTC_DAY BYTEREG(RTCLOCK_BASE,0x3FE0)
+#define RTC_DATE BYTEREG(RTCLOCK_BASE,0x3FE8)
+#define RTC_MONTH BYTEREG(RTCLOCK_BASE,0x3FF0)
+#define RTC_YEAR BYTEREG(RTCLOCK_BASE,0x3FF8)
+
+#define RTC_CTL_LOCK_READ (0x40) /* lock RTC whilst reading */
+#define RTC_CTL_LOCK_WRITE (0x80) /* lock RTC whilst writing */
+
+/* Macro to force out-standing memory transfers to complete before
+ next sequence. For the moment we assume that the processor in the
+ CMA101 board supports at least ISA II. */
+#define DOSYNC() asm(" .set mips2 ; sync ; .set mips0")
+
+/* We disable interrupts by writing zero to all of the masks, and the
+ global interrupt enable bit: */
+#define INTDISABLE(sr,tmp) asm("\
+ .set mips2 ; \
+ mfc0 %0,$12 ; \
+ lui %1,0xffff ; \
+ ori %1,%1,0xfffe ; \
+ and %1, %0, %1 ; \
+ mtc0 %1,$12 ; \
+ .set mips0" : "=d" (sr), "=d" (tmp))
+#define INTRESTORE(sr) asm("\
+ .set mips2 ; \
+ mtc0 %0,$12 ; \
+ .set mips0" : : "d" (sr))
+
+/* TODO:FIXME: The CPU card support should be in separate source file
+ from the standard CMA101 support provided in this file. */
+
+/* The CMA101 board being used contains a CMA257 Vr4300 CPU:
+ MasterClock is at 33MHz. PClock is derived from MasterClock by
+ multiplying by the ratio defined by the DivMode pins:
+ DivMode(1:0) MasterClock PClock Ratio
+ 00 100MHz 100MHz 1:1
+ 01 100MHz 150MHz 1.5:1
+ 10 100MHz 200MHz 2:1
+ 11 100Mhz 300MHz 3:1
+
+ Are these pins reflected in the EC bits in the CONFIG register? or
+ is that talking about a different clock multiplier?
+ 110 = 1
+ 111 = 1.5
+ 000 = 2
+ 001 = 3
+ (all other values are undefined)
+*/
+
+#define MASTERCLOCK (33) /* ticks per uS */
+unsigned int pclock; /* number of PClock ticks per uS */
+void
+set_pclock (void)
+{
+ unsigned int config;
+ asm volatile ("mfc0 %0,$16 ; nop ; nop" : "=r" (config)); /* nasty CP0 register constant */
+ switch ((config >> 28) & 0x7) {
+ case 0x7 : /* 1.5:1 */
+ pclock = (MASTERCLOCK + (MASTERCLOCK / 2));
+ break;
+
+ case 0x0 : /* 2:1 */
+ pclock = (2 * MASTERCLOCK);
+ break;
+
+ case 0x1 : /* 3:1 */
+ pclock = (3 * MASTERCLOCK);
+ break;
+
+ case 0x6 : /* 1:1 */
+ default : /* invalid configuration, so assume the lowest */
+ pclock = MASTERCLOCK;
+ break;
+ }
+
+ return;
+}
+
+#define PCLOCK_WAIT(x) __cpu_timer_poll((x) * pclock)
+
+/* NOTE: On the Cogent CMA101 board the LCD controller will sometimes
+ return not-busy, even though it is. The work-around is to perform a
+ ~50uS delay before checking the busy signal. */
+
+static int
+lcd_busy (void)
+{
+ PCLOCK_WAIT(50); /* 50uS delay */
+ return(*LCD_CMD & LCD_STAT_BUSY);
+}
+
+/* Note: This code *ASSUMES* that the LCD has already been initialised
+ by the monitor. It only provides code to write to the LCD, and is
+ not a complete device driver. */
+
+void
+lcd_display (int line, const char *msg)
+{
+ int n;
+
+ if (lcd_busy ())
+ return;
+
+ *LCD_CMD = (LCD_SET_DDADDR | (line == 1 ? 0x40 : 0x00));
+
+ for (n = 0; n < 16; n++) {
+ if (lcd_busy ())
+ return;
+ if (*msg)
+ *LCD_DATA = *msg++;
+ else
+ *LCD_DATA = ' ';
+ }
+
+ return;
+}
+
+#define SM_PATTERN (0x55AA55AA)
+#define SM_INCR ((256 << 10) / sizeof(unsigned int)) /* 64K words */
+
+extern unsigned int __buserr_count(void);
+extern void __default_buserr_handler(void);
+extern void __restore_buserr_handler(void);
+
+/* Allow the user to provide his/her own defaults. */
+unsigned int __sizemem_default;
+
+unsigned int
+__sizemem ()
+{
+ volatile unsigned int *base;
+ volatile unsigned int *probe;
+ unsigned int baseorig;
+ unsigned int sr;
+ extern char end[];
+ char *endptr = (char *)&end;
+ int extra;
+
+ /* If the linker script provided a value for the memory size (or the user
+ overrode it in a debugger), use that. */
+ if (__sizemem_default)
+ return __sizemem_default;
+
+ /* If we are running in kernel segment 0 (possibly cached), try sizing memory
+ in kernel segment 1 (uncached) to avoid some problems with monitors. */
+ if (endptr >= K0BASE_ADDR && endptr < K1BASE_ADDR)
+ endptr = (endptr - K0BASE_ADDR) + K1BASE_ADDR;
+
+ INTDISABLE(sr,baseorig); /* disable all interrupt masks */
+
+ __default_buserr_handler();
+ __cpu_flush();
+
+ DOSYNC();
+
+ /* _end is the end of the user program. _end may not be properly aligned
+ for an int pointer, so we adjust the address to make sure it is safe.
+ We use void * arithmetic to avoid accidentally truncating the pointer. */
+
+ extra = ((int) endptr & (sizeof (int) - 1));
+ base = ((void *) endptr + sizeof (int) - extra);
+ baseorig = *base;
+
+ *base = SM_PATTERN;
+ /* This assumes that the instructions fetched between the store, and
+ the following read will have changed the data bus contents: */
+ if (*base == SM_PATTERN) {
+ probe = base;
+ for (;;) {
+ unsigned int probeorig;
+ probe += SM_INCR;
+ probeorig = *probe;
+ /* Check if a bus error occurred: */
+ if (!__buserr_count()) {
+ *probe = SM_PATTERN;
+ DOSYNC();
+ if (*probe == SM_PATTERN) {
+ *probe = ~SM_PATTERN;
+ DOSYNC();
+ if (*probe == ~SM_PATTERN) {
+ if (*base == SM_PATTERN) {
+ *probe = probeorig;
+ continue;
+ }
+ }
+ }
+ *probe = probeorig;
+ }
+ break;
+ }
+ }
+
+ *base = baseorig;
+ __restore_buserr_handler();
+ __cpu_flush();
+
+ DOSYNC();
+
+ INTRESTORE(sr); /* restore interrupt mask to entry state */
+
+ return((probe - base) * sizeof(unsigned int));
+}
+
+/* Provided as a function, so as to avoid reading the I/O location
+ multiple times: */
+static int
+convertbcd(byte)
+ unsigned char byte;
+{
+ return ((((byte >> 4) & 0xF) * 10) + (byte & 0xF));
+}
+
+time_t
+time (_timer)
+ time_t *_timer;
+{
+ time_t result = 0;
+ struct tm tm;
+ *RTC_CONTROL |= RTC_CTL_LOCK_READ;
+ DOSYNC();
+
+ tm.tm_sec = convertbcd(*RTC_SECS);
+ tm.tm_min = convertbcd(*RTC_MINS);
+ tm.tm_hour = convertbcd(*RTC_HOURS);
+ tm.tm_mday = convertbcd(*RTC_DATE);
+ tm.tm_mon = convertbcd(*RTC_MONTH);
+ tm.tm_year = convertbcd(*RTC_YEAR);
+
+ DOSYNC();
+ *RTC_CONTROL &= ~(RTC_CTL_LOCK_READ | RTC_CTL_LOCK_WRITE);
+
+ tm.tm_isdst = 0;
+
+ /* Check for invalid time information */
+ if ((tm.tm_sec < 60) && (tm.tm_min < 60) && (tm.tm_hour < 24)
+ && (tm.tm_mday < 32) && (tm.tm_mon < 13)) {
+
+ /* Get the correct year number, but keep it in YEAR-1900 form: */
+ if (tm.tm_year < 70)
+ tm.tm_year += 100;
+
+#if 0 /* NOTE: mon_printf() can only accept 4 arguments (format string + 3 fields) */
+ mon_printf("[DBG: s=%d m=%d h=%d]", tm.tm_sec, tm.tm_min, tm.tm_hour);
+ mon_printf("[DBG: d=%d m=%d y=%d]", tm.tm_mday, tm.tm_mon, tm.tm_year);
+#endif
+
+ /* Convert the time-structure into a second count */
+ result = mktime (&tm);
+ }
+
+ if (_timer != NULL)
+ *_timer = result;
+
+ return (result);
+}
+
+/*> EOF cma101.c <*/
cma101.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: array-io.c
===================================================================
--- array-io.c (nonexistent)
+++ array-io.c (revision 829)
@@ -0,0 +1,68 @@
+/* array-io.c -- I/O code for the Array Tech RAID disk controller.
+ *
+ * Copyright (c) 1995 Cygnus Support
+ *
+ * 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.
+ */
+#include "mips.h"
+
+/*
+ * outbyte -- shove a byte out the serial port. We wait till the byte
+ */
+int
+outbyte(byte)
+ unsigned char byte;
+{
+ return (PUTCHAR(byte));
+}
+
+/*
+ * inbyte -- get a byte from the serial port
+ */
+unsigned char
+inbyte()
+{
+ return ((unsigned char)GETCHAR);
+}
+
+/*
+ * led_putnum -- print a hex number on the LED. the value of num must be a byte.
+
+ * The max number 15, since the front panel only has 4 LEDs.
+ */
+void
+led_putnum ( num )
+char num;
+{
+ print ("Sorry, unimplemented, using putnum instead\r\n");
+ putnum (num);
+}
+
+/*
+ * zylons -- draw a rotating pattern. NOTE: this function never returns.
+ */
+void
+zylons()
+{
+ print ("Sorry, unimplemented\r\n");
+}
+
+/*
+ * delay -- a really gross, ugly hack for simple time delays
+ */
+void
+delay (x)
+ int x;
+{
+ int y = 17;
+ while (x-- !=0)
+ y = y^2;
+}
array-io.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: nullmon.c
===================================================================
--- nullmon.c (nonexistent)
+++ nullmon.c (revision 829)
@@ -0,0 +1,64 @@
+/* nullmon.c - Stub or monitor services.
+ *
+ * Copyright (c) 1998 Cygnus Support
+ *
+ * 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.
+ */
+
+/* This is a ROMSTUB
+ Various libraries in libgloss may reference board specific services.
+ These are often performed by system calls and by rom specific
+ interfaces such as dvemon.c This file defines the null interface in
+ which the rom monitor either does not exist or is not used.
+ Linking with this file supports applications which only exercise
+ the processor, specifically, the GDB test suite.
+ By linking this object in rather than a monitor specific support
+ we can insure that the testsuite will run without references or
+ linkages to nonexistent monitor services.
+ Similarly, every service provided by this file muse be provided by all
+ monitor speciifc interfaces.
+ PLEASE DO NOT MAKE THIS FILE SPECIFIC TO ANY MONITOR
+ */
+
+/* This form is giving linker relocation errors */
+#if ! defined(BOARD_MEM_SIZE)
+#define BOARD_MEM_SIZE 0x100000 /* About a megabyte */
+#endif
+extern char _ftext[]; /* Defined in nullmon.ld */
+extern char _end[]; /* Defined in nullmon.ld */
+
+#if defined(FIXME_WARNINGS)
+#warning("FIXME: struct s_mem belongs in a header file")
+#endif
+struct s_mem
+{ unsigned int size;
+ unsigned int icsize;
+ unsigned int dcsize;
+};
+
+void
+get_mem_info (mem)
+ struct s_mem *mem;
+{
+ mem->size = BOARD_MEM_SIZE - (_end - _ftext);
+}
+
+/* SYSTEM INTERFACE
+ Since we are defining a NULL operating environment here, I am
+ entering the stub definitions for the GNUpro libraries, System Calls.
+ I would rather not to even pretend to support these functions but, they
+ get pulled in by other libraries.
+*/
+
+int read(int file, char * ptr , int len) { return 0 ; }
+int close (int file) { return -1 ; }
+int write(int file , char * ptr, int len) { return 0 ; }
+/*eof*/
nullmon.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pmon.ld
===================================================================
--- pmon.ld (nonexistent)
+++ pmon.ld (revision 829)
@@ -0,0 +1,178 @@
+/* The following TEXT start address leaves space for the monitor
+ workspace. */
+
+ENTRY(_start)
+STARTUP(crt0.o)
+OUTPUT_ARCH("mips:4000")
+OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-littlemips")
+GROUP(-lc -lpmon -lgcc)
+SEARCH_DIR(.)
+__DYNAMIC = 0;
+
+/*
+ * Allocate the stack to be at the top of memory, since the stack
+ * grows down
+ */
+PROVIDE (__stack = 0);
+/* PROVIDE (__global = 0); */
+
+/*
+ * Initalize some symbols to be zero so we can reference them in the
+ * crt0 without core dumping. These functions are all optional, but
+ * we do this so we can have our crt0 always use them if they exist.
+ * This is so BSPs work better when using the crt0 installed with gcc.
+ * We have to initalize them twice, so we multiple object file
+ * formats, as some prepend an underscore.
+ */
+PROVIDE (hardware_exit_hook = 0);
+PROVIDE (hardware_hazard_hook = 0);
+PROVIDE (hardware_init_hook = 0);
+PROVIDE (software_init_hook = 0);
+
+SECTIONS
+{
+ . = 0xA0020000;
+ .text : {
+ _ftext = . ;
+ KEEP (*(.init))
+ eprol = .;
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ *(.mips16.fn.*)
+ *(.mips16.call.*)
+ PROVIDE (__runtime_reloc_start = .);
+ *(.rel.sdata)
+ PROVIDE (__runtime_reloc_stop = .);
+ KEEP (*(.fini))
+ etext = .;
+ _etext = .;
+ }
+
+ .eh_frame_hdr : { *(.eh_frame_hdr) }
+ .eh_frame : { KEEP (*(.eh_frame)) }
+ .gcc_except_table : { *(.gcc_except_table) }
+ .jcr : { KEEP (*(.jcr)) }
+ .ctors :
+ {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+
+ KEEP (*crtbegin.o(.ctors))
+
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ }
+
+ .dtors :
+ {
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ }
+
+ . = .;
+ .rodata : {
+ *(.rdata)
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ }
+ _fdata = ALIGN(16);
+ .data : {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ }
+ . = ALIGN(8);
+ _gp = . + 0x8000;
+ __global = _gp;
+ .lit8 : {
+ *(.lit8)
+ }
+ .lit4 : {
+ *(.lit4)
+ }
+ .sdata : {
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ }
+ . = ALIGN(4);
+ edata = .;
+ _edata = .;
+ _fbss = .;
+ .sbss : {
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ *(.scommon)
+ }
+ .bss : {
+ _bss_start = . ;
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ }
+
+ end = .;
+ _end = .;
+
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to
+ the beginning of the section so we begin them at 0. */
+
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ .debug_ranges 0 : { *(.debug_ranges) }
+
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+
+ /* Special sections generated by gcc */
+ /* Newer GNU linkers strip by default */
+ .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+ .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+ .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+ .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+ .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+ .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+ .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+ .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
+}
Index: crt0.S
===================================================================
--- crt0.S (nonexistent)
+++ crt0.S (revision 829)
@@ -0,0 +1,288 @@
+/*
+ * crt0.S -- startup file for MIPS.
+ *
+ * Copyright (c) 1995, 1996, 1997, 2001 Cygnus Support
+ *
+ * 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.
+ */
+
+#ifdef __mips16
+/* This file contains 32 bit assembly code. */
+ .set nomips16
+#endif
+
+#include "regs.S"
+
+/*
+ * Set up some room for a stack. We just grab a chunk of memory.
+ */
+#define STACK_SIZE 0x4000
+#define GLOBAL_SIZE 0x2000
+
+#define STARTUP_STACK_SIZE 0x0100
+
+/* This is for referencing addresses that are not in the .sdata or
+ .sbss section under embedded-pic, or before we've set up gp. */
+#ifdef __mips_embedded_pic
+# ifdef __mips64
+# define LA(t,x) la t,x-PICBASE ; daddu t,s0,t
+# else
+# define LA(t,x) la t,x-PICBASE ; addu t,s0,t
+# endif
+#else /* __mips_embedded_pic */
+# define LA(t,x) la t,x
+#endif /* __mips_embedded_pic */
+
+ .comm __memsize, 12
+ .comm __lstack, STARTUP_STACK_SIZE
+
+ .text
+ .align 2
+
+/* Without the following nop, GDB thinks _start is a data variable.
+ * This is probably a bug in GDB in handling a symbol that is at the
+ * start of the .text section.
+ */
+ nop
+
+ .globl hardware_hazard_hook .text
+ .globl _start
+ .ent _start
+_start:
+ .set noreorder
+#ifdef __mips_embedded_pic
+#define PICBASE start_PICBASE
+ PICBASE = .+8
+ bal PICBASE
+ nop
+ move s0,$31
+#endif
+#if __mips<3
+# define STATUS_MASK (SR_CU1|SR_PE)
+#else
+/* Post-mips2 has no SR_PE bit. */
+# ifdef __mips64
+/* Turn on 64-bit addressing and additional float regs. */
+# define STATUS_MASK (SR_CU1|SR_FR|SR_KX|SR_SX|SR_UX)
+# else
+# if __mips_fpr==32
+# define STATUS_MASK (SR_CU1)
+# else
+/* Turn on additional float regs. */
+# define STATUS_MASK (SR_CU1|SR_FR)
+# endif
+# endif
+#endif
+ li v0, STATUS_MASK
+ mtc0 v0, C0_SR
+ mtc0 zero, C0_CAUSE
+ nop
+
+ /* Avoid hazard from FPU enable and other SR changes. */
+ LA (t0, hardware_hazard_hook)
+ beq t0,zero,1f
+ nop
+ jal t0
+ nop
+1:
+
+/* Check for FPU presence. Don't check if we know that soft_float is
+ being used. (This also avoids illegal instruction exceptions.) */
+
+#ifndef __mips_soft_float
+ li t2,0xAAAA5555
+ mtc1 t2,fp0 /* write to FPR 0 */
+ mtc1 zero,fp1 /* write to FPR 1 */
+ mfc1 t0,fp0
+ mfc1 t1,fp1
+ nop
+ bne t0,t2,1f /* check for match */
+ nop
+ bne t1,zero,1f /* double check */
+ nop
+ j 2f /* FPU is present. */
+ nop
+#endif
+1:
+ /* FPU is not present. Set status register to say that. */
+ li v0, (STATUS_MASK-(STATUS_MASK & SR_CU1))
+ mtc0 v0, C0_SR
+ nop
+ /* Avoid hazard from FPU disable. */
+ LA (t0, hardware_hazard_hook)
+ beq t0,zero,2f
+ nop
+ jal t0
+ nop
+2:
+
+
+/* Fix high bits, if any, of the PC so that exception handling
+ doesn't get confused. */
+ LA (v0, 3f)
+ jr v0
+ nop
+3:
+ LA (gp, _gp) # set the global data pointer
+ .end _start
+
+/*
+ * zero out the bss section.
+ */
+ .globl __memsize
+ .globl get_mem_info .text
+ .globl __stack
+ .globl __global
+ .ent zerobss
+zerobss:
+ LA (v0, _fbss)
+ LA (v1, _end)
+3:
+ sw zero,0(v0)
+ bltu v0,v1,3b
+ addiu v0,v0,4 # executed in delay slot
+
+ la t0, __lstack # make a small stack so we
+ addiu sp, t0, STARTUP_STACK_SIZE # can run some C code
+ la a0, __memsize # get the usable memory size
+ jal get_mem_info
+ nop
+
+ /* setup the stack pointer */
+ LA (t0, __stack) # is __stack set ?
+ bne t0,zero,4f
+ nop
+
+ /* NOTE: a0[0] contains the amount of memory available, and
+ not the last memory address. */
+ la a0, __memsize
+ lw t0,0(a0) # last address of memory available
+ la t1,K0BASE # cached kernel memory
+ addu t0,t0,t1 # get the end of memory address
+ /* Allocate 32 bytes for the register parameters. Allocate 16
+ bytes for a null argv and envp. Round the result up to 64
+ bytes to preserve alignment. */
+ subu t0,t0,64
+4:
+ move sp,t0 # set stack pointer
+ .end zerobss
+
+/*
+ * initialize target specific stuff. Only execute these
+ * functions it they exist.
+ */
+ .globl hardware_init_hook .text
+ .globl software_init_hook .text
+ .type _fini,@function
+ .type _init,@function
+ .globl atexit .text
+ .globl exit .text
+ .ent init
+init:
+ LA (t9, hardware_init_hook) # init the hardware if needed
+ beq t9,zero,6f
+ nop
+ jal t9
+ nop
+6:
+ LA (t9, software_init_hook) # init the hardware if needed
+ beq t9,zero,7f
+ nop
+ jal t9
+ nop
+7:
+ LA (a0, _fini)
+ jal atexit
+ nop
+
+#ifdef GCRT0
+ .globl _ftext
+ .globl _extext
+ LA (a0, _ftext)
+ LA (a1, _etext)
+ jal monstartup
+ nop
+#endif
+
+
+ jal _init # run global constructors
+ nop
+
+ addiu a1,sp,32 # argv = sp + 32
+ addiu a2,sp,40 # envp = sp + 40
+#if __mips64
+ sd zero,(a1) # argv[argc] = 0
+ sd zero,(a2) # envp[0] = 0
+#else
+ sw zero,(a1)
+ sw zero,(a2)
+#endif
+ jal main # call the program start function
+ move a0,zero # set argc to 0
+
+ # fall through to the "exit" routine
+ jal exit # call libc exit to run the G++
+ # destructors
+ move a0,v0 # pass through the exit code
+ .end init
+
+
+/* Assume the PICBASE set up above is no longer valid below here. */
+#ifdef __mips_embedded_pic
+#undef PICBASE
+#endif
+
+/*
+ * _exit -- Exit from the application. Normally we cause a user trap
+ * to return to the ROM monitor for another run. NOTE: This is
+ * the only other routine we provide in the crt0.o object, since
+ * it may be tied to the "_start" routine. It also allows
+ * executables that contain a complete world to be linked with
+ * just the crt0.o object.
+ */
+ .globl hardware_exit_hook .text
+ .globl _exit
+ .ent _exit
+_exit:
+7:
+#ifdef __mips_embedded_pic
+ /* Need to reinit PICBASE, since we might be called via exit()
+ rather than via a return path which would restore old s0. */
+#define PICBASE exit_PICBASE
+ PICBASE = .+8
+ bal PICBASE
+ nop
+ move s0,$31
+#endif
+#ifdef GCRT0
+ LA (t0, _mcleanup)
+ jal t0
+ nop
+#endif
+ LA (t0, hardware_exit_hook)
+ beq t0,zero,1f
+ nop
+ jal t0
+ nop
+1:
+
+ # break instruction can cope with 0xfffff, but GAS limits the range:
+ break 1023
+ b 7b # but loop back just in-case
+ nop
+ .end _exit
+
+/* Assume the PICBASE set up above is no longer valid below here. */
+#ifdef __mips_embedded_pic
+#undef PICBASE
+#endif
+
+/* EOF crt0.S */
crt0.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dvemon.c
===================================================================
--- dvemon.c (nonexistent)
+++ dvemon.c (revision 829)
@@ -0,0 +1,83 @@
+/* dve.c -- I/O code for the Densan DVE-R3900 board.
+ *
+ * Copyright (c) 1998, 1999 Cygnus Support
+ *
+ * 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.
+ */
+
+/* Flag indicating that we are being debugged by GDB. If set,
+ preceded each character output to the console with a ^O,
+ so that GDB will print it instead of discarding it. */
+
+int output_debug = 1;
+
+/* Monitor "ci" function (console input) */
+
+typedef int (*cifunc)(int waitflag);
+#ifdef __mips64
+static cifunc ci = (cifunc) 0xffffffffbfc00010L;
+#else
+static cifunc ci = (cifunc) 0xbfc00010;
+#endif
+
+#define WAIT 1
+#define NOWAIT 0
+#define NOCHAR (-1)
+
+/* Monitor "co" function (console output) */
+
+typedef void (*cofunc)(int c);
+#ifdef __mips64
+static cofunc co = (cofunc) 0xffffffffbfc00018L;
+#else
+static cofunc co = (cofunc) 0xbfc00018;
+#endif
+
+/* outbyte -- shove a byte out the serial port; used by write.c. */
+
+int
+outbyte(byte)
+ unsigned char byte;
+{
+ /* Output a ^O prefix so that GDB won't discard the output. */
+ if (output_debug)
+ co (0x0f);
+
+ co (byte);
+ return byte;
+}
+
+/* inbyte -- get a byte from the serial port; used by read.c. */
+
+unsigned char
+inbyte()
+{
+ return (unsigned char) ci (WAIT);
+}
+
+
+/* Structure filled in by get_mem_info. Only the size field is
+ actually used (by sbrk), so the others aren't even filled in. */
+
+struct s_mem
+{
+ unsigned int size;
+ unsigned int icsize;
+ unsigned int dcsize;
+};
+
+
+void
+get_mem_info (mem)
+ struct s_mem *mem;
+{
+ mem->size = 0x1000000; /* DVE-R3900 board has 16 MB of RAM */
+}
dvemon.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pmon.S
===================================================================
--- pmon.S (nonexistent)
+++ pmon.S (revision 829)
@@ -0,0 +1,177 @@
+/*
+ * pmon.S -- low-level entry points into PMON monitor.
+ *
+ * Copyright (c) 1996, 1997, 2002 Cygnus Support
+ *
+ * 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.
+ */
+
+#ifdef __mips16
+/* This file contains 32 bit assembly code. */
+ .set nomips16
+#endif
+
+#if !defined(__mips64)
+ /* This machine does not support 64-bit operations. */
+ #define ADDU addu
+ #define SUBU subu
+#else
+ /* This machine supports 64-bit operations. */
+ #define ADDU daddu
+ #define SUBU dsubu
+#endif
+
+#include "regs.S"
+
+ .text
+ .align 2
+
+#ifdef LSI
+ #define PMON_VECTOR 0xffffffffbfc00200
+#else
+ #define PMON_VECTOR 0xffffffffbfc00500
+#endif
+
+#ifndef __mips_eabi
+/* Provide named functions for entry into the monitor: */
+#define INDIRECT(name,index) \
+ .globl name; \
+ .ent name; \
+ .set noreorder; \
+name: la $2,+(PMON_VECTOR+((index)*4)); \
+ lw $2,0($2); \
+ j $2; \
+ nop; \
+ .set reorder; \
+ .end name
+
+#else
+#define INDIRECT(name,index) \
+ .globl name; \
+ .ent name; \
+ .set noreorder; \
+name: la $2,+(PMON_VECTOR+((index)*4)); \
+ lw $2,0($2); \
+ SUBU sp,sp,0x40; \
+ sd ra,0x38(sp); \
+ sd fp,0x30(sp); \
+ jal $2; \
+ move fp,sp; \
+ ld ra,0x38(sp); \
+ ld fp,0x30(sp); \
+ j ra; \
+ ADDU sp,sp,0x40; \
+ .set reorder; \
+ .end name
+#endif
+
+
+/* The following magic numbers are for the slots into the PMON monitor */
+/* The first are used as the lo-level library run-time: */
+INDIRECT(read,0)
+INDIRECT(write,1)
+INDIRECT(open,2)
+INDIRECT(close,3)
+/* The following are useful monitor routines: */
+INDIRECT(mon_ioctl,4)
+INDIRECT(mon_printf,5)
+INDIRECT(mon_vsprintf,6)
+INDIRECT(mon_ttctl,7)
+INDIRECT(mon_cliexit,8)
+INDIRECT(mon_getenv,9)
+INDIRECT(mon_onintr,10)
+INDIRECT(mon_flush_cache,11)
+INDIRECT(_flush_cache,11)
+INDIRECT(mon_exception,12)
+
+/* The following routine is required by the "print()" function: */
+ .globl outbyte
+ .ent outbyte
+ .set noreorder
+outbyte:
+ subu sp,sp,0x20 /* allocate stack space for string */
+ sd ra,0x18(sp) /* stack return address */
+ sd fp,0x10(sp) /* stack frame-pointer */
+ move fp,sp /* take a copy of the stack pointer */
+ /* We leave so much space on the stack for the string (16
+ characters), since the call to mon_printf seems to corrupt
+ the 8bytes at offset 8 into the string/stack. */
+ sb a0,0x00(sp) /* character to print */
+ sb z0,0x01(sp) /* NUL terminator */
+ jal mon_printf /* and output the string */
+ move a0,sp /* take a copy of the string pointer {DELAY SLOT} */
+
+ move sp,fp /* recover stack pointer */
+ ld ra,0x18(sp) /* recover return address */
+ ld fp,0x10(sp) /* recover frame-pointer */
+ j ra /* return to the caller */
+ addu sp,sp,0x20 /* dump the stack space {DELAY SLOT} */
+ .set reorder
+ .end outbyte
+
+/* The following routine is required by the "sbrk()" function: */
+ .globl get_mem_info
+ .ent get_mem_info
+ .set noreorder
+get_mem_info:
+ # in: a0 = pointer to 3 word structure
+ # out: void
+ subu sp,sp,0x18 /* create some stack space */
+ sd ra,0x00(sp) /* stack return address */
+ sd fp,0x08(sp) /* stack frame-pointer */
+ sd a0,0x10(sp) /* stack structure pointer */
+ move fp,sp /* take a copy of the stack pointer */
+
+ # The monitor has already sized memory, but unfortunately we
+ # do not have access to the data location containing the
+ # memory size.
+
+ jal __sizemem
+ nop
+
+ ld a0,0x10(sp) # recover structure pointer
+ sw v0,0(a0) # amount of memory available
+
+ # Deal with getting the cache size information:
+ mfc0 a1, C0_CONFIG
+ nop
+ nop
+ andi a2,a1,0x7 << 9 # bits 11..9 for instruction cache size
+ sll a2,a2,12 - 8
+ sw a2,4(a0)
+ andi a2,a1,0x7 << 6 # bits 8..6 for data cache size
+ sll a2,a2,12 - 5
+ sw a2,8(a0) # data cache size
+ #
+ move sp,fp /* recover stack pointer */
+ ld ra,0x00(sp) /* recover return address */
+ ld fp,0x08(sp) /* recover frame-pointer */
+ j ra /* return to the caller */
+ addu sp,sp,0x18 /* restore stack pointer {DELAY SLOT} */
+ .set reorder
+ .end get_mem_info
+
+#ifdef LSI
+
+# For the LSI MiniRISC board, we can safely assume that we have
+# at least one megabyte of RAM.
+
+ .globl __sizemem
+ .ent __sizemem
+__sizemem:
+ li v0,0x100000
+ j ra
+ .end __sizemem
+#else
+
+
+#endif
+/* EOF pmon.S */
pmon.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: cfe_mem.c
===================================================================
--- cfe_mem.c (nonexistent)
+++ cfe_mem.c (revision 829)
@@ -0,0 +1,130 @@
+/* cfe_mem.c -- Replaceable memory management hooks for MIPS boards
+ running CFE. */
+
+/*
+ * Copyright 2003
+ * Broadcom Corporation. All rights reserved.
+ *
+ * This software is furnished under license and may be used and copied only
+ * in accordance with the following terms and conditions. Subject to these
+ * conditions, you may download, copy, install, use, modify and distribute
+ * modified or unmodified copies of this software in source and/or binary
+ * form. No title or ownership is transferred hereby.
+ *
+ * 1) Any source code used, modified or distributed must reproduce and
+ * retain this copyright notice and list of conditions as they appear in
+ * the source file.
+ *
+ * 2) No right is granted to use any trade name, trademark, or logo of
+ * Broadcom Corporation. The "Broadcom Corporation" name may not be
+ * used to endorse or promote products derived from this software
+ * without the prior written permission of Broadcom Corporation.
+ *
+ * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+ * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE
+ * FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE
+ * LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ */
+
+#include "cfe_api.h"
+
+/* Structure filled in by get_mem_info. Only the size field is
+ actually used (by sbrk), so the others aren't even filled in.
+ Note that 'size' is the __size__ of the heap starting at _end! */
+struct s_mem {
+ unsigned int size;
+ unsigned int icsize;
+ unsigned int dcsize;
+};
+
+void *get_mem_info (struct s_mem *);
+
+extern char _end[];
+
+/* Address immediately after available memory. */
+static unsigned long memtop;
+
+/* Program stack size. */
+static unsigned long stack_size;
+
+void
+__libcfe_meminit (void)
+{
+ /* If the user has provided a memory-limit function, use it to
+ determine the end of usable memory. */
+ if (&__libcfe_mem_limit != NULL)
+ memtop = __libcfe_mem_limit ();
+ else
+ {
+ uint64_t start, length, type;
+ int i, rv;
+ long end_segbits, end_pa;
+
+ /* Note that this only works if _end and the program live in kseg0
+ or kseg1. Not a problem with the default linker script, but
+ if you're writing your own, keep it in mind. For more complex
+ memory allocation needs, you're encouraged to copy this file
+ and syscalls.c (for sbrk()), and reimplement as appropriate. */
+ end_segbits = (long)_end & ~ 0x1fffffffL;
+ end_pa = (long)_end & 0x1fffffffL;
+
+ for (i = 0; ; i++)
+ {
+ rv = cfe_enummem(i, 0, &start, &length, &type);
+ if (rv < 0)
+ {
+ /* Did not find an available entry containing _end.
+ Assume a minimal amount of memory (1MB). */
+ memtop = _end + (1 * 1024 * 1024);
+ break;
+ }
+
+ /* If not available, try the next. */
+ if (type != CFE_MI_AVAILABLE)
+ continue;
+
+ /* If end_pa is between start and (start + length) then we have
+ a winner. */
+ if (end_pa >= start && end_pa < (start + length))
+ {
+ memtop = (start + length) | end_segbits;
+ break;
+ }
+ }
+ }
+
+ /* If the user has provided a memory-limit function, use it to
+ determine the end of usable memory. */
+ if (&__libcfe_stack_size != NULL)
+ stack_size = __libcfe_stack_size ();
+ else
+ stack_size = (32 * 1024); /* Default = 32KB. */
+
+ /* Chop the top of memory to a 32-byte aligned location, and
+ round the stack size up to a 32-byte multiple. */
+ memtop = memtop & ~(unsigned long)31;
+ stack_size = (stack_size + 31) & ~(unsigned long)31;
+}
+
+void *
+__libcfe_stack_top (void)
+{
+ /* Grow down from the top of available memory. Obviously, if
+ code writes above this limit, problems could result! */
+ return (void *) memtop;
+}
+
+/* For compatibility, get_mem_info returns the top of memory
+ (i.e., the stack address). Nothing actually uses that,
+ though. */
+void *
+get_mem_info (struct s_mem *meminfo)
+{
+ meminfo->size = (char *)(memtop - stack_size) - _end;
+ return (void *) memtop;
+}
cfe_mem.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: array.ld
===================================================================
--- array.ld (nonexistent)
+++ array.ld (revision 829)
@@ -0,0 +1,181 @@
+/*
+ * memory map assumed by prom and standalone system
+ *
+ * physical kseg1 use
+ *
+ * 0x1fc20000 0xbfc20000
+ * to prom text and read-only data
+ * 0x1fc00000 0xbfc00000 (in cpu board "prom space")
+ *
+ * (Top of RAM - 8K) downward sash and standalone program stack
+ * | ( - 8K to preserve kernel message bufs)
+ * V (standalone programs grow their stack
+ * immediately below sash's stack)
+ *
+ * ^
+ * |
+ * 0x00100000 0xa0100000 upward sash program text, data, and bss
+ *
+ * ^
+ * |
+ * 0x00020000 0xa0020000 upward standalone program text, data, and bss
+ * (kernel is loaded here, also)
+ *
+ * 0x0001ffff 0xa001ffff downward dbgmon stack
+ * |
+ * V
+ *
+ * ^
+ * |
+ * 0x00010000 0xa0010000 upward dbgmon text, data, and bss
+ *
+ * 0x0000ffff 0xa000ffff downward prom monitor stack
+ * |
+ * V
+ *
+ * ^
+ * |
+ * 0x00000500 0xa0000500 upward prom monitor bss
+ *
+ * 0x000004ff 0xa00004ff
+ * to restart block
+ * 0x00000400 0xa0000400
+ *
+ * 0x000003ff 0xa00003ff
+ * to general exception code
+ * 0x00000080 0xa0000080 (note cpu addresses as 0x80000080!)
+ *
+ * 0x0000007f 0xa000007f
+ * to utlbmiss exception code
+ * 0x00000000 0xa0000000 (note cpu addresses as 0x80000000!)
+ */
+
+/* Uncomment this if you want srecords.
+OUTPUT_FORMAT(srec)
+ */
+ENTRY(start)
+STARTUP(crt0.o)
+INPUT(array.o)
+SEARCH_DIR(.)
+__DYNAMIC = 0;
+
+/*
+ * Allocate the stack to be at the top of memory, since the stack
+ * grows down
+ *
+PROVIDE (__stack = 1M - 8);
+ */
+
+/*
+ * Initalize some symbols to be zero so we can reference them in the
+ * crt0 without core dumping. These functions are all optional, but
+ * we do this so we can have our crt0 always use them if they exist.
+ * This is so BSPs work better when using the crt0 installed with gcc.
+ * We have to initalize them twice, so we multiple object file
+ * formats, as some prepend an underscore.
+ */
+PROVIDE (hardware_exit_hook = 0);
+PROVIDE (hardware_hazard_hook = 0);
+PROVIDE (hardware_init_hook = 0);
+PROVIDE (software_init_hook = 0);
+
+SECTIONS
+{
+ . = 0x80020000;
+ .text : {
+ _ftext = . ;
+ KEEP (*(.init))
+ eprol = .;
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ *(.mips16.fn.*)
+ *(.mips16.call.*)
+ PROVIDE (__runtime_reloc_start = .);
+ *(.rel.sdata)
+ PROVIDE (__runtime_reloc_stop = .);
+ KEEP (*(.fini))
+ etext = .;
+ _etext = .;
+ }
+
+ .eh_frame_hdr : { *(.eh_frame_hdr) }
+ .eh_frame : { KEEP (*(.eh_frame)) }
+ .gcc_except_table : { *(.gcc_except_table) }
+ .jcr : { KEEP (*(.jcr)) }
+ .ctors :
+ {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+
+ KEEP (*crtbegin.o(.ctors))
+
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ }
+
+ .dtors :
+ {
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ }
+
+ . = .;
+ .rdata : {
+ *(.rdata)
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ }
+ _fdata = ALIGN(16);
+ .data : {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ }
+ _gp = ALIGN(16) + 0x8000;
+ .lit8 : {
+ *(.lit8)
+ }
+ .lit4 : {
+ *(.lit4)
+ }
+ .sdata : {
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ }
+ edata = .;
+ _edata = .;
+ _fbss = .;
+ .sbss : {
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ *(.scommon)
+ }
+ .bss : {
+ _bss_start = . ;
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ }
+ end = .;
+ _end = .;
+}
Index: dve.ld
===================================================================
--- dve.ld (nonexistent)
+++ dve.ld (revision 829)
@@ -0,0 +1,167 @@
+/* Linker script for Densan DVE-R3900/20A board */
+
+ENTRY(_start)
+STARTUP(crt0.o)
+OUTPUT_ARCH("mips:3000")
+OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-littlemips")
+GROUP(-lc -ldve -lgcc)
+SEARCH_DIR(.)
+__DYNAMIC = 0;
+
+/*
+ * Allocate the stack to be at the top of memory, since the stack
+ * grows down
+ */
+PROVIDE (__stack = 0);
+/* PROVIDE (__global = 0); */
+
+/*
+ * Initalize some symbols to be zero so we can reference them in the
+ * crt0 without core dumping. These functions are all optional, but
+ * we do this so we can have our crt0 always use them if they exist.
+ * This is so BSPs work better when using the crt0 installed with gcc.
+ * We have to initalize them twice, so we multiple object file
+ * formats, as some prepend an underscore.
+ */
+PROVIDE (hardware_exit_hook = 0);
+PROVIDE (hardware_hazard_hook = 0);
+PROVIDE (hardware_init_hook = 0);
+PROVIDE (software_init_hook = 0);
+
+SECTIONS
+{
+ . = 0xA0040000;
+ .text : {
+ _ftext = . ;
+ KEEP (*(.init))
+ eprol = .;
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ *(.mips16.fn.*)
+ *(.mips16.call.*)
+ PROVIDE (__runtime_reloc_start = .);
+ *(.rel.sdata)
+ PROVIDE (__runtime_reloc_stop = .);
+ KEEP (*(.fini))
+ etext = .;
+ _etext = .;
+ }
+
+ .eh_frame_hdr : { *(.eh_frame_hdr) }
+ .eh_frame : { KEEP (*(.eh_frame)) }
+ .gcc_except_table : { *(.gcc_except_table) }
+ .jcr : { KEEP (*(.jcr)) }
+ .ctors :
+ {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+
+ KEEP (*crtbegin.o(.ctors))
+
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ }
+
+ .dtors :
+ {
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ }
+
+ . = .;
+ .rodata : {
+ *(.rdata)
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ }
+ _fdata = ALIGN(16);
+ .data : {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ CONSTRUCTORS
+ }
+ . = ALIGN(8);
+ _gp = . + 0x8000;
+ __global = _gp;
+ .lit8 : {
+ *(.lit8)
+ }
+ .lit4 : {
+ *(.lit4)
+ }
+ .sdata : {
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ }
+ . = ALIGN(4);
+ edata = .;
+ _edata = .;
+ _fbss = .;
+ .sbss : {
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ *(.scommon)
+ }
+ .bss : {
+ _bss_start = . ;
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ }
+
+ end = .;
+ _end = .;
+
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to
+ the beginning of the section so we begin them at 0. */
+
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ .debug_ranges 0 : { *(.debug_ranges) }
+
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+}
Index: syscalls.c
===================================================================
--- syscalls.c (nonexistent)
+++ syscalls.c (revision 829)
@@ -0,0 +1,45 @@
+#include <_ansi.h>
+#include
+#include
+
+#include "regs.S"
+
+extern char _end[];
+
+/* FIXME: This is not ideal, since we do a get_mem_info() call for
+ every sbrk() call. */
+char *
+sbrk (nbytes)
+ int nbytes;
+{
+ static char *heap_ptr = _end;
+ static char *heap_start = _end;
+ char *base;
+ struct s_mem {
+ unsigned int size;
+ unsigned int icsize;
+ unsigned int dcsize;
+ } mem;
+ unsigned int avail = 0;
+
+ /* The sizeof (s_mem.size) must be 4 bytes. The compiler should be
+ able to eliminate this check */
+ if (sizeof (unsigned int) != 4)
+ return (char *)-1;
+
+ get_mem_info(&mem);
+ /* NOTE: The value returned from the get_mem_info call is the amount
+ of memory, and not the address of the (last byte + 1) */
+
+ if (((size_t)heap_ptr >= heap_start) && ((size_t)heap_ptr < (heap_start + mem.size))) {
+ avail = (heap_start + mem.size) - (size_t)heap_ptr;
+ base = heap_ptr;
+ } /* else will fail since "nbytes" will be greater than zeroed "avail" value */
+
+ if ((nbytes > avail) || (heap_ptr + nbytes < _end))
+ base = (char *)-1;
+ else
+ heap_ptr += nbytes;
+
+ return base;
+}
syscalls.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: idt.ld
===================================================================
--- idt.ld (nonexistent)
+++ idt.ld (revision 829)
@@ -0,0 +1,184 @@
+/* The following TEXT start address leaves space for the monitor
+ workspace. i.e. the NEC VR4300 (IDT) first free address is actually
+ 0xa001af20. */
+
+ENTRY(_start)
+STARTUP(crt0.o)
+OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-littlemips")
+GROUP(-lc -lidt -lgcc)
+SEARCH_DIR(.)
+__DYNAMIC = 0;
+
+/*
+ * Allocate the stack to be at the top of memory, since the stack
+ * grows down
+ */
+PROVIDE (__stack = 0);
+/* PROVIDE (__global = 0); */
+
+/*
+ * Initalize some symbols to be zero so we can reference them in the
+ * crt0 without core dumping. These functions are all optional, but
+ * we do this so we can have our crt0 always use them if they exist.
+ * This is so BSPs work better when using the crt0 installed with gcc.
+ * We have to initalize them twice, so we multiple object file
+ * formats, as some prepend an underscore.
+ */
+PROVIDE (hardware_exit_hook = 0);
+PROVIDE (hardware_hazard_hook = 0);
+PROVIDE (hardware_init_hook = 0);
+PROVIDE (software_init_hook = 0);
+
+SECTIONS
+{
+ . = 0xA0020000;
+ .text : {
+ _ftext = . ;
+ PROVIDE (eprol = .);
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ *(.mips16.fn.*)
+ *(.mips16.call.*)
+ }
+ .init : {
+ KEEP (*(.init))
+ }
+ .fini : {
+ KEEP (*(.fini))
+ }
+ .rel.sdata : {
+ PROVIDE (__runtime_reloc_start = .);
+ *(.rel.sdata)
+ PROVIDE (__runtime_reloc_stop = .);
+ }
+ PROVIDE (etext = .);
+ _etext = .;
+
+ .eh_frame_hdr : { *(.eh_frame_hdr) }
+ .eh_frame : { KEEP (*(.eh_frame)) }
+ .gcc_except_table : { *(.gcc_except_table) }
+ .jcr : { KEEP (*(.jcr)) }
+ .ctors :
+ {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+
+ KEEP (*crtbegin.o(.ctors))
+
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ }
+
+ .dtors :
+ {
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ }
+
+ . = .;
+ .rodata : {
+ *(.rdata)
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ }
+ _fdata = ALIGN(16);
+ .data : {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ }
+ . = ALIGN(8);
+ _gp = . + 0x8000;
+ __global = _gp;
+ .lit8 : {
+ *(.lit8)
+ }
+ .lit4 : {
+ *(.lit4)
+ }
+ .sdata : {
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ }
+ . = ALIGN(4);
+ PROVIDE (edata = .);
+ _edata = .;
+ _fbss = .;
+ .sbss : {
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ *(.scommon)
+ }
+ .bss : {
+ _bss_start = . ;
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ }
+
+ PROVIDE (end = .);
+ _end = .;
+
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to
+ the beginning of the section so we begin them at 0. */
+
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ .debug_ranges 0 : { *(.debug_ranges) }
+
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+
+ /* Special sections generated by gcc */
+ /* Newer GNU linkers strip by default */
+ .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+ .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+ .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+ .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+ .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+ .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+ .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+ .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
+}
Index: nullmon.ld
===================================================================
--- nullmon.ld (nonexistent)
+++ nullmon.ld (revision 829)
@@ -0,0 +1,179 @@
+/* The following TEXT start address leaves space for the monitor
+ workspace. */
+
+ENTRY(_start)
+STARTUP(crt0.o)
+OUTPUT_ARCH("mips:4000")
+OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-littlemips")
+GROUP(-lc -lnullmon -lgcc)
+SEARCH_DIR(.)
+__DYNAMIC = 0;
+
+/*
+ * Allocate the stack to be at the top of memory, since the stack
+ * grows down
+ */
+PROVIDE (__stack = 0);
+/* PROVIDE (__global = 0); */
+
+/*
+ * Initalize some symbols to be zero so we can reference them in the
+ * crt0 without core dumping. These functions are all optional, but
+ * we do this so we can have our crt0 always use them if they exist.
+ * This is so BSPs work better when using the crt0 installed with gcc.
+ * We have to initalize them twice, so we multiple object file
+ * formats, as some prepend an underscore.
+ */
+PROVIDE (hardware_exit_hook = 0);
+PROVIDE (hardware_hazard_hook = 0);
+PROVIDE (hardware_init_hook = 0);
+PROVIDE (software_init_hook = 0);
+
+SECTIONS
+{
+ . = 0xA0020000;
+ .text : {
+ _ftext = . ;
+ KEEP (*(.init))
+ eprol = .;
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ *(.mips16.fn.*)
+ *(.mips16.call.*)
+ PROVIDE (__runtime_reloc_start = .);
+ *(.rel.sdata)
+ PROVIDE (__runtime_reloc_stop = .);
+ KEEP (*(.fini))
+ etext = .;
+ _etext = .;
+ }
+
+ .eh_frame_hdr : { *(.eh_frame_hdr) }
+ .eh_frame : { KEEP (*(.eh_frame)) }
+ .gcc_except_table : { *(.gcc_except_table) }
+ .jcr : { KEEP (*(.jcr)) }
+ .ctors :
+ {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+
+ KEEP (*crtbegin.o(.ctors))
+
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ }
+
+ .dtors :
+ {
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ }
+
+ . = .;
+ .rodata : {
+ *(.rdata)
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ }
+ _fdata = ALIGN(16);
+ .data : {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ }
+ . = ALIGN(8);
+ _gp = . + 0x8000;
+ __global = _gp;
+ .lit8 : {
+ *(.lit8)
+ }
+ .lit4 : {
+ *(.lit4)
+ }
+ .sdata : {
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ }
+ . = ALIGN(4);
+ edata = .;
+ _edata = .;
+ _fbss = .;
+ .sbss : {
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ *(.scommon)
+ }
+ .bss : {
+ _bss_start = . ;
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ }
+ . = ALIGN(64) ;
+ end = .;
+ _end = .;
+
+
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to
+ the beginning of the section so we begin them at 0. */
+
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ .debug_ranges 0 : { *(.debug_ranges) }
+
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+
+ /* Special sections generated by gcc */
+ /* Newer GNU linkers strip by default */
+ .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+ .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+ .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+ .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+ .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+ .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+ .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+ .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
+}
Index: vr5xxx.S
===================================================================
--- vr5xxx.S (nonexistent)
+++ vr5xxx.S (revision 829)
@@ -0,0 +1,457 @@
+/*
+ * vr5xxx.S -- CPU specific support routines
+ *
+ * Copyright (c) 1999 Cygnus Solutions
+ *
+ * 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.
+ */
+
+/* This file cloned from vr4300.S by dlindsay@cygnus.com
+ * and recoded to suit Vr5432 and Vr5000.
+ * Should be no worse for Vr43{00,05,10}.
+ * Specifically, __cpu_flush() has been changed (a) to allow for the hardware
+ * difference (in set associativity) between the Vr5432 and Vr5000,
+ * and (b) to flush the optional secondary cache of the Vr5000.
+ */
+
+/* Processor Revision Identifier (PRID) Register: Implementation Numbers */
+#define IMPL_VR5432 0x54
+
+/* Cache Constants not determinable dynamically */
+#define VR5000_2NDLINE 32 /* secondary cache line size */
+#define VR5432_LINE 32 /* I,Dcache line sizes */
+#define VR5432_SIZE (16*1024) /* I,Dcache half-size */
+
+
+#ifndef __mips64
+ .set mips3
+#endif
+#ifdef __mips16
+/* This file contains 32 bit assembly code. */
+ .set nomips16
+#endif
+
+#include "regs.S"
+
+ .text
+ .align 2
+
+ # Taken from "R4300 Preliminary RISC Processor Specification
+ # Revision 2.0 January 1995" page 39: "The Count
+ # register... increments at a constant rate... at one-half the
+ # PClock speed."
+ # We can use this fact to provide small polled delays.
+ .globl __cpu_timer_poll
+ .ent __cpu_timer_poll
+__cpu_timer_poll:
+ .set noreorder
+ # in: a0 = (unsigned int) number of PClock ticks to wait for
+ # out: void
+
+ # The Vr4300 counter updates at half PClock, so divide by 2 to
+ # get counter delta:
+ bnezl a0, 1f # continue if delta non-zero
+ srl a0, a0, 1 # divide ticks by 2 {DELAY SLOT}
+ # perform a quick return to the caller:
+ j ra
+ nop # {DELAY SLOT}
+1:
+ mfc0 v0, C0_COUNT # get current counter value
+ nop
+ nop
+ # We cannot just do the simple test, of adding our delta onto
+ # the current value (ignoring overflow) and then checking for
+ # equality. The counter is incrementing every two PClocks,
+ # which means the counter value can change between
+ # instructions, making it hard to sample at the exact value
+ # desired.
+
+ # However, we do know that our entry delta value is less than
+ # half the number space (since we divide by 2 on entry). This
+ # means we can use a difference in signs to indicate timer
+ # overflow.
+ addu a0, v0, a0 # unsigned add (ignore overflow)
+ # We know have our end value (which will have been
+ # sign-extended to fill the 64bit register value).
+2:
+ # get current counter value:
+ mfc0 v0, C0_COUNT
+ nop
+ nop
+ # This is an unsigned 32bit subtraction:
+ subu v0, a0, v0 # delta = (end - now) {DELAY SLOT}
+ bgtzl v0, 2b # looping back is most likely
+ nop
+ # We have now been delayed (in the foreground) for AT LEAST
+ # the required number of counter ticks.
+ j ra # return to caller
+ nop # {DELAY SLOT}
+ .set reorder
+ .end __cpu_timer_poll
+
+ # Flush the processor caches to memory:
+
+ .globl __cpu_flush
+ .ent __cpu_flush
+__cpu_flush:
+ .set noreorder
+ # NOTE: The Vr4300 and Vr5432 *CANNOT* have any secondary cache.
+ # On those, SC (bit 17 of CONFIG register) is hard-wired to 1,
+ # except that email from Dennis_Han@el.nec.com says that old
+ # versions of the Vr5432 incorrectly hard-wired this bit to 0.
+ # The Vr5000 has an optional direct-mapped secondary cache,
+ # and the SC bit correctly indicates this.
+
+ # So, for the 4300 and 5432 we want to just
+ # flush the primary Data and Instruction caches.
+ # For the 5000 it is desired to flush the secondary cache too.
+ # There is an operation difference worth noting.
+ # The 4300 and 5000 primary caches use VA bit 14 to choose cache set,
+ # whereas 5432 primary caches use VA bit 0.
+
+ # This code interprets the relevant Config register bits as
+ # much as possible, except for the 5432.
+ # The code therefore has some portability.
+ # However, the associativity issues mean you should not just assume
+ # that this code works anywhere. Also, the secondary cache set
+ # size is hardwired, since the 5000 series does not define codes
+ # for variant sizes.
+
+ # Note: this version of the code flushes D$ before I$.
+ # It is difficult to construct a case where that matters,
+ # but it cant hurt.
+
+ mfc0 a0, C0_PRID # a0 = Processor Revision register
+ nop # dlindsay: unclear why the nops, but
+ nop # vr4300.S had such so I do too.
+ srl a2, a0, PR_IMP # want bits 8..15
+ andi a2, a2, 0x255 # mask: now a2 = Implementation # field
+ li a1, IMPL_VR5432
+ beq a1, a2, 8f # use Vr5432-specific flush algorithm
+ nop
+
+ # Non-Vr5432 version of the code.
+ # (The distinctions being: CONFIG is truthful about secondary cache,
+ # and we act as if the primary Icache and Dcache are direct mapped.)
+
+ mfc0 t0, C0_CONFIG # t0 = CONFIG register
+ nop
+ nop
+ li a1, 1 # a1=1, a useful constant
+
+ srl a2, t0, CR_IC # want IC field of CONFIG
+ andi a2, a2, 0x7 # mask: now a2= code for Icache size
+ add a2, a2, 12 # +12
+ sllv a2, a1, a2 # a2=primary instruction cache size in bytes
+
+ srl a3, t0, CR_DC # DC field of CONFIG
+ andi a3, a3, 0x7 # mask: now a3= code for Dcache size
+ add a3, a3, 12 # +12
+ sllv a3, a1, a3 # a3=primary data cache size in bytes
+
+ li t2, (1 << CR_IB) # t2=mask over IB boolean
+ and t2, t2, t0 # test IB field of CONFIG register value
+ beqz t2, 1f #
+ li a1, 16 # 16 bytes (branch shadow: always loaded.)
+ li a1, 32 # non-zero, then 32bytes
+1:
+
+ li t2, (1 << CR_DB) # t2=mask over DB boolean
+ and t2, t2, t0 # test BD field of CONFIG register value
+ beqz t2, 2f #
+ li a0, 16 # 16bytes (branch shadow: always loaded.)
+ li a0, 32 # non-zero, then 32bytes
+2:
+ lui t1, ((K0BASE >> 16) & 0xFFFF)
+ ori t1, t1, (K0BASE & 0xFFFF)
+
+ # At this point,
+ # a0 = primary Dcache line size in bytes
+ # a1 = primary Icache line size in bytes
+ # a2 = primary Icache size in bytes
+ # a3 = primary Dcache size in bytes
+ # t0 = CONFIG value
+ # t1 = a round unmapped cached base address (we are in kernel mode)
+ # t2,t3 scratch
+
+ addi t3, t1, 0 # t3=t1=start address for any cache
+ add t2, t3, a3 # t2=end adress+1 of Dcache
+ sub t2, t2, a0 # t2=address of last line in Dcache
+3:
+ cache INDEX_WRITEBACK_INVALIDATE_D,0(t3)
+ bne t3, t2, 3b #
+ addu t3, a0 # (delay slot) increment by Dcache line size
+
+
+ # Now check CONFIG to see if there is a secondary cache
+ lui t2, (1 << (CR_SC-16)) # t2=mask over SC boolean
+ and t2, t2, t0 # test SC in CONFIG
+ bnez t2, 6f
+
+ # There is a secondary cache. Find out its sizes.
+
+ srl t3, t0, CR_SS # want SS field of CONFIG
+ andi t3, t3, 0x3 # mask: now t3= code for cache size.
+ beqz t3, 4f
+ lui a3, ((512*1024)>>16) # a3= 512K, code was 0
+ addu t3, -1 # decrement code
+ beqz t3, 4f
+ lui a3, ((1024*1024)>>16) # a3= 1 M, code 1
+ addu t3, -1 # decrement code
+ beqz t3, 4f
+ lui a3, ((2*1024*1024)>>16) # a3= 2 M, code 2
+ j 6f # no secondary cache, code 3
+
+4: # a3 = secondary cache size in bytes
+ li a0, VR5000_2NDLINE # no codes assigned for other than 32
+
+ # At this point,
+ # a0 = secondary cache line size in bytes
+ # a1 = primary Icache line size in bytes
+ # a2 = primary Icache size in bytes
+ # a3 = secondary cache size in bytes
+ # t1 = a round unmapped cached base address (we are in kernel mode)
+ # t2,t3 scratch
+
+ addi t3, t1, 0 # t3=t1=start address for any cache
+ add t2, t3, a3 # t2=end address+1 of secondary cache
+ sub t2, t2, a0 # t2=address of last line in secondary cache
+5:
+ cache INDEX_WRITEBACK_INVALIDATE_SD,0(t3)
+ bne t3, t2, 5b
+ addu t3, a0 # (delay slot) increment by line size
+
+
+6: # Any optional secondary cache done. Now do I-cache and return.
+
+ # At this point,
+ # a1 = primary Icache line size in bytes
+ # a2 = primary Icache size in bytes
+ # t1 = a round unmapped cached base address (we are in kernel mode)
+ # t2,t3 scratch
+
+ add t2, t1, a2 # t2=end adress+1 of Icache
+ sub t2, t2, a1 # t2=address of last line in Icache
+7:
+ cache INDEX_INVALIDATE_I,0(t1)
+ bne t1, t2, 7b
+ addu t1, a1 # (delay slot) increment by Icache line size
+
+ j ra # return to the caller
+ nop
+
+8:
+
+# Vr5432 version of the cpu_flush code.
+# (The distinctions being: CONFIG can not be trusted about secondary
+# cache (which does not exist). The primary caches use Virtual Address Bit 0
+# to control set selection.
+
+# Code does not consult CONFIG about cache sizes: knows the hardwired sizes.
+# Since both I and D have the same size and line size, uses a merged loop.
+
+ li a0, VR5432_LINE
+ li a1, VR5432_SIZE
+ lui t1, ((K0BASE >> 16) & 0xFFFF)
+ ori t1, t1, (K0BASE & 0xFFFF)
+
+ # a0 = cache line size in bytes
+ # a1 = 1/2 cache size in bytes
+ # t1 = a round unmapped cached base address (we are in kernel mode)
+
+ add t2, t1, a1 # t2=end address+1
+ sub t2, t2, a0 # t2=address of last line in Icache
+
+9:
+ cache INDEX_WRITEBACK_INVALIDATE_D,0(t1) # set 0
+ cache INDEX_WRITEBACK_INVALIDATE_D,1(t1) # set 1
+ cache INDEX_INVALIDATE_I,0(t1) # set 0
+ cache INDEX_INVALIDATE_I,1(t1) # set 1
+ bne t1, t2, 9b
+ addu t1, a0
+
+ j ra # return to the caller
+ nop
+ .set reorder
+ .end __cpu_flush
+
+ # NOTE: This variable should *NOT* be addressed relative to
+ # the $gp register since this code is executed before $gp is
+ # initialised... hence we leave it in the text area. This will
+ # cause problems if this routine is ever ROMmed:
+
+ .globl __buserr_cnt
+__buserr_cnt:
+ .word 0
+ .align 3
+__k1_save:
+ .word 0
+ .word 0
+ .align 2
+
+ .ent __buserr
+ .globl __buserr
+__buserr:
+ .set noat
+ .set noreorder
+ # k0 and k1 available for use:
+ mfc0 k0,C0_CAUSE
+ nop
+ nop
+ andi k0,k0,0x7c
+ sub k0,k0,7 << 2
+ beq k0,$0,__buserr_do
+ nop
+ # call the previous handler
+ la k0,__previous
+ jr k0
+ nop
+ #
+__buserr_do:
+ # TODO: check that the cause is indeed a bus error
+ # - if not then just jump to the previous handler
+ la k0,__k1_save
+ sd k1,0(k0)
+ #
+ la k1,__buserr_cnt
+ lw k0,0(k1) # increment counter
+ addu k0,1
+ sw k0,0(k1)
+ #
+ la k0,__k1_save
+ ld k1,0(k0)
+ #
+ mfc0 k0,C0_EPC
+ nop
+ nop
+ addu k0,k0,4 # skip offending instruction
+ mtc0 k0,C0_EPC # update EPC
+ nop
+ nop
+ eret
+# j k0
+# rfe
+ .set reorder
+ .set at
+ .end __buserr
+
+__exception_code:
+ .set noreorder
+ lui k0,%hi(__buserr)
+ daddiu k0,k0,%lo(__buserr)
+ jr k0
+ nop
+ .set reorder
+__exception_code_end:
+
+ .data
+__previous:
+ .space (__exception_code_end - __exception_code)
+ # This subtracting two addresses is working
+ # but is not garenteed to continue working.
+ # The assemble reserves the right to put these
+ # two labels into different frags, and then
+ # cant take their difference.
+
+ .text
+
+ .ent __default_buserr_handler
+ .globl __default_buserr_handler
+__default_buserr_handler:
+ .set noreorder
+ # attach our simple bus error handler:
+ # in: void
+ # out: void
+ mfc0 a0,C0_SR
+ nop
+ li a1,SR_BEV
+ and a1,a1,a0
+ beq a1,$0,baseaddr
+ lui a0,0x8000 # delay slot
+ lui a0,0xbfc0
+ daddiu a0,a0,0x0200
+baseaddr:
+ daddiu a0,a0,0x0180
+ # a0 = base vector table address
+ la a1,__exception_code_end
+ la a2,__exception_code
+ subu a1,a1,a2
+ la a3,__previous
+ # there must be a better way of doing this????
+copyloop:
+ lw v0,0(a0)
+ sw v0,0(a3)
+ lw v0,0(a2)
+ sw v0,0(a0)
+ daddiu a0,a0,4
+ daddiu a2,a2,4
+ daddiu a3,a3,4
+ subu a1,a1,4
+ bne a1,$0,copyloop
+ nop
+ la a0,__buserr_cnt
+ sw $0,0(a0)
+ j ra
+ nop
+ .set reorder
+ .end __default_buserr_handler
+
+ .ent __restore_buserr_handler
+ .globl __restore_buserr_handler
+__restore_buserr_handler:
+ .set noreorder
+ # restore original (monitor) bus error handler
+ # in: void
+ # out: void
+ mfc0 a0,C0_SR
+ nop
+ li a1,SR_BEV
+ and a1,a1,a0
+ beq a1,$0,res_baseaddr
+ lui a0,0x8000 # delay slot
+ lui a0,0xbfc0
+ daddiu a0,a0,0x0200
+res_baseaddr:
+ daddiu a0,a0,0x0180
+ # a0 = base vector table address
+ la a1,__exception_code_end
+ la a3,__exception_code
+ subu a1,a1,a3
+ la a3,__previous
+ # there must be a better way of doing this????
+res_copyloop:
+ lw v0,0(a3)
+ sw v0,0(a0)
+ daddiu a0,a0,4
+ daddiu a3,a3,4
+ subu a1,a1,4
+ bne a1,$0,res_copyloop
+ nop
+ j ra
+ nop
+ .set reorder
+ .end __restore_buserr_handler
+
+ .ent __buserr_count
+ .globl __buserr_count
+__buserr_count:
+ .set noreorder
+ # restore original (monitor) bus error handler
+ # in: void
+ # out: unsigned int __buserr_cnt
+ la v0,__buserr_cnt
+ lw v0,0(v0)
+ j ra
+ nop
+ .set reorder
+ .end __buserr_count
+
+/* EOF vr5xxx.S */
vr5xxx.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: lsi.ld
===================================================================
--- lsi.ld (nonexistent)
+++ lsi.ld (revision 829)
@@ -0,0 +1,132 @@
+/* The following TEXT start address leaves space for the monitor
+ workspace. */
+
+ENTRY(_start)
+STARTUP(crt0.o)
+OUTPUT_ARCH("mips:4000")
+OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-littlemips")
+GROUP(-lc -llsi -lgcc)
+SEARCH_DIR(.)
+__DYNAMIC = 0;
+
+/*
+ * Allocate the stack to be at the top of memory, since the stack
+ * grows down
+ */
+PROVIDE (__stack = 0);
+/* PROVIDE (__global = 0); */
+
+/*
+ * Initalize some symbols to be zero so we can reference them in the
+ * crt0 without core dumping. These functions are all optional, but
+ * we do this so we can have our crt0 always use them if they exist.
+ * This is so BSPs work better when using the crt0 installed with gcc.
+ * We have to initalize them twice, so we multiple object file
+ * formats, as some prepend an underscore.
+ */
+PROVIDE (hardware_exit_hook = 0);
+PROVIDE (hardware_hazard_hook = 0);
+PROVIDE (hardware_init_hook = 0);
+PROVIDE (software_init_hook = 0);
+
+SECTIONS
+{
+ . = 0xA0020000;
+ .text : {
+ _ftext = . ;
+ KEEP (*(.init))
+ eprol = .;
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ PROVIDE (__runtime_reloc_start = .);
+ *(.rel.sdata)
+ PROVIDE (__runtime_reloc_stop = .);
+ KEEP (*(.fini))
+ etext = .;
+ _etext = .;
+ }
+
+ .eh_frame_hdr : { *(.eh_frame_hdr) }
+ .eh_frame : { KEEP (*(.eh_frame)) }
+ .gcc_except_table : { *(.gcc_except_table) }
+ .jcr : { KEEP (*(.jcr)) }
+ .ctors :
+ {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+
+ KEEP (*crtbegin.o(.ctors))
+
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ }
+
+ .dtors :
+ {
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ }
+
+ . = .;
+ .rodata : {
+ *(.rdata)
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ }
+ _fdata = ALIGN(16);
+ .data : {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ CONSTRUCTORS
+ }
+ . = ALIGN(8);
+ _gp = . + 0x8000;
+ __global = _gp;
+ .lit8 : {
+ *(.lit8)
+ }
+ .lit4 : {
+ *(.lit4)
+ }
+ .sdata : {
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ }
+ edata = .;
+ _edata = .;
+ _fbss = .;
+ .sbss : {
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ *(.scommon)
+ }
+ .bss : {
+ _bss_start = . ;
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ }
+ end = .;
+ _end = .;
+}
Index: configure.in
===================================================================
--- configure.in (nonexistent)
+++ configure.in (revision 829)
@@ -0,0 +1,123 @@
+# Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000, 2002 Cygnus Support
+#
+# 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.
+#
+# Process this file with autoconf to produce a configure script.
+#
+AC_PREREQ(2.59)
+AC_INIT(crt0.S)
+
+if test "${enable_shared}" = "yes" ; then
+ echo "Shared libraries not supported for cross compiling, ignored"
+fi
+
+if test "$srcdir" = "." ; then
+ if test "${with_target_subdir}" != "." ; then
+ libgloss_topdir="${srcdir}/${with_multisrctop}../../.."
+ else
+ libgloss_topdir="${srcdir}/${with_multisrctop}../.."
+ fi
+else
+ libgloss_topdir="${srcdir}/../.."
+fi
+AC_CONFIG_AUX_DIR($libgloss_topdir)
+
+AC_CANONICAL_SYSTEM
+AC_ARG_PROGRAM
+
+AC_PROG_INSTALL
+
+LIB_AC_PROG_CC
+AS=${AS-as}
+AC_SUBST(AS)
+AR=${AR-ar}
+AC_SUBST(AR)
+LD=${LD-ld}
+AC_SUBST(LD)
+AC_PROG_RANLIB
+LIB_AM_PROG_AS
+
+crt0=crt0.o
+pcrt0=pcrt0.o
+
+case "${target}" in
+ mips*-tx39*-*|mipstx39*-*-*)
+ part_specific_obj=
+ part_specific_defines=
+ script_list="dve idt jmr3904app jmr3904dram jmr3904dram-java jmr3904app-java"
+ bsp_list="libdve.a libidt.a libjmr3904.a"
+ ;;
+ mipsisa32-*-* | mipsisa32el-*-* | \
+ mipsisa32r2-*-* | mipsisa32r2el-*-* | \
+ mipsisa64*-*-*)
+ crt0="crt0_cfe.o crt0_cygmon.o crt0.o"
+ pcrt0="pcrt0.o"
+ part_specific_obj=
+ part_specific_defines=
+ script_list="idt32 idt64 cfe"
+ bsp_list="libcygmon.a libidt.a libcfe.a"
+ ;;
+ mips*-lsi*-*)
+ part_specific_obj=entry.o
+ part_specific_defines=
+ script_list="lsi"
+ bsp_list=liblsi.a
+ ;;
+ mips64vr5*-*-*)
+ part_specific_obj="vr5xxx.o cma101.o"
+ part_specific_defines=-DR5000
+ script_list="idt pmon ddb ddb-kseg0 lsi idtecoff nullmon"
+ bsp_list="libidt.a libpmon.a liblsi.a libnullmon.a"
+ ;;
+ mips64vr-*-* | mips64vrel-*-*)
+ part_specific_obj="vr5xxx.o cma101.o"
+ script_list="ddb ddb-kseg0 nullmon"
+ bsp_list="libpmon.a libnullmon.a"
+ ;;
+ *)
+ crt0="crt0_cfe.o crt0.o"
+ part_specific_obj="vr4300.o cma101.o"
+ part_specific_defines=
+ script_list="idt pmon ddb ddb-kseg0 lsi cfe idtecoff nullmon"
+ bsp_list="libidt.a libpmon.a liblsi.a libcfe.a libnullmon.a"
+ ;;
+esac
+
+host_makefile_frag=${srcdir}/../config/default.mh
+target_makefile_frag=${srcdir}/../config/mips.mt
+
+dnl We have to assign the same value to other variables because autoconf
+dnl doesn't provide a mechanism to substitute a replacement keyword with
+dnl arbitrary data or pathnames.
+dnl
+host_makefile_frag_path=$host_makefile_frag
+AC_SUBST(host_makefile_frag_path)
+AC_SUBST_FILE(host_makefile_frag)
+target_makefile_frag_path=$target_makefile_frag
+AC_SUBST(target_makefile_frag_path)
+AC_SUBST_FILE(target_makefile_frag)
+AC_SUBST(part_specific_obj)
+AC_SUBST(part_specific_defines)
+AC_SUBST(script_list)
+AC_SUBST(bsp_list)
+AC_SUBST(crt0)
+AC_SUBST(pcrt0)
+
+AC_CONFIG_FILES(Makefile,
+. ${libgloss_topdir}/config-ml.in,
+srcdir=${srcdir}
+target=${target}
+with_multisubdir=${with_multisubdir}
+ac_configure_args="${ac_configure_args} --enable-multilib"
+CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+libgloss_topdir=${libgloss_topdir}
+)
+AC_OUTPUT
configure.in
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: jmr3904app-java.ld
===================================================================
--- jmr3904app-java.ld (nonexistent)
+++ jmr3904app-java.ld (revision 829)
@@ -0,0 +1,135 @@
+/* Linker script forJMR 3904 board using Java + qthreads */
+
+ENTRY(_start)
+STARTUP(crt0.o)
+OUTPUT_ARCH("mips:3000")
+OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-littlemips")
+GROUP(-lc -ljmr3904 -lgcc -lgcjcoop)
+SEARCH_DIR(.)
+__DYNAMIC = 0;
+
+PROVIDE (_mem_size = 0x100000); /* JMR3904 comes as standard with 512k of RAM */
+
+/* Set the size of the stack for Java with qthreads. */
+PROVIDE (_Jv_QthreadsStackSize = 0x10000);
+
+/* PROVIDE (__global = 0); */
+
+/*
+ * Initalize some symbols to be zero so we can reference them in the
+ * crt0 without core dumping. These functions are all optional, but
+ * we do this so we can have our crt0 always use them if they exist.
+ * This is so BSPs work better when using the crt0 installed with gcc.
+ * We have to initalize them twice, so we multiple object file
+ * formats, as some prepend an underscore.
+ */
+PROVIDE (hardware_exit_hook = 0);
+PROVIDE (hardware_hazard_hook = 0);
+PROVIDE (hardware_init_hook = 0);
+PROVIDE (software_init_hook = 0);
+
+SECTIONS
+{
+ . = 0x80008000;
+ /* This is NOT the address which fits with the monitor from jmr. */
+ /* It fits the Cygmon ROMS */
+ .text : {
+ _ftext = . ;
+ KEEP (*(.init))
+ eprol = .;
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ *(.mips16.fn.*)
+ *(.mips16.call.*)
+ PROVIDE (__runtime_reloc_start = .);
+ *(.rel.sdata)
+ PROVIDE (__runtime_reloc_stop = .);
+ KEEP (*(.fini))
+ etext = .;
+ _etext = .;
+ }
+ . = .;
+ .rodata : {
+ *(.rdata)
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ }
+ _fdata = ALIGN(16);
+ .data : {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ CONSTRUCTORS
+ }
+ . = ALIGN(8);
+ _gp = . + 0x8000;
+ __global = _gp;
+ .lit8 : {
+ *(.lit8)
+ }
+ .lit4 : {
+ *(.lit4)
+ }
+ .sdata : {
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ }
+ . = ALIGN(4);
+ edata = .;
+ _edata = .;
+ _fbss = .;
+ .sbss : {
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ *(.scommon)
+ }
+ .bss : {
+ _bss_start = . ;
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ . += 0x2000 ; /* 8k bytes of stack. */
+ __stack = ALIGN(64) ;
+ . = __stack ;
+ }
+
+ end = .;
+ _end = .;
+
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to
+ the beginning of the section so we begin them at 0. */
+
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ .debug_ranges 0 : { *(.debug_ranges) }
+
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+}
Index: ddb.ld
===================================================================
--- ddb.ld (nonexistent)
+++ ddb.ld (revision 829)
@@ -0,0 +1,166 @@
+/* The following TEXT start address leaves space for the monitor
+ workspace. */
+
+ENTRY(_start)
+STARTUP(crt0.o)
+OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-littlemips")
+GROUP(-lc -lpmon -lgcc)
+SEARCH_DIR(.)
+__DYNAMIC = 0;
+
+/*
+ * Allocate the stack to be at the top of memory, since the stack
+ * grows down
+ */
+PROVIDE (__stack = 0);
+/* PROVIDE (__global = 0); */
+
+/*
+ * Initalize some symbols to be zero so we can reference them in the
+ * crt0 without core dumping. These functions are all optional, but
+ * we do this so we can have our crt0 always use them if they exist.
+ * This is so BSPs work better when using the crt0 installed with gcc.
+ * We have to initalize them twice, so we multiple object file
+ * formats, as some prepend an underscore.
+ */
+PROVIDE (hardware_exit_hook = 0);
+PROVIDE (hardware_hazard_hook = 0);
+PROVIDE (hardware_init_hook = 0);
+PROVIDE (software_init_hook = 0);
+
+SECTIONS
+{
+ . = 0xA0100000;
+ .text : {
+ _ftext = . ;
+ KEEP (*(.init))
+ eprol = .;
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ *(.mips16.fn.*)
+ *(.mips16.call.*)
+ PROVIDE (__runtime_reloc_start = .);
+ *(.rel.sdata)
+ PROVIDE (__runtime_reloc_stop = .);
+ KEEP (*(.fini))
+ etext = .;
+ _etext = .;
+ }
+
+ .eh_frame_hdr : { *(.eh_frame_hdr) }
+ .eh_frame : { KEEP (*(.eh_frame)) }
+ .gcc_except_table : { *(.gcc_except_table) }
+ .jcr : { KEEP (*(.jcr)) }
+ .ctors :
+ {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+
+ KEEP (*crtbegin.o(.ctors))
+
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ }
+
+ .dtors :
+ {
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ }
+
+ . = .;
+ .rdata : {
+ *(.rdata)
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ }
+ _fdata = ALIGN(16);
+ .data : {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ }
+ . = ALIGN(8);
+ _gp = . + 0x8000;
+ __global = _gp;
+ .lit8 : {
+ *(.lit8)
+ }
+ .lit4 : {
+ *(.lit4)
+ }
+ .sdata : {
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ }
+ . = ALIGN(4);
+ edata = .;
+ _edata = .;
+ _fbss = .;
+ .sbss : {
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ *(.scommon)
+ }
+ .bss : {
+ _bss_start = . ;
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ }
+
+ end = .;
+ _end = .;
+
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to
+ the beginning of the section so we begin them at 0. */
+
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ .debug_ranges 0 : { *(.debug_ranges) }
+
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+}
Index: cfe.ld
===================================================================
--- cfe.ld (nonexistent)
+++ cfe.ld (revision 829)
@@ -0,0 +1,173 @@
+/* The following TEXT start address leaves space for the monitor
+ workspace. */
+
+ENTRY(_start)
+STARTUP(crt0_cfe.o)
+OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-littlemips")
+GROUP(-lc -lcfe -lgcc)
+SEARCH_DIR(.)
+__DYNAMIC = 0;
+
+/*
+ * Allocate the stack to be at the top of memory, since the stack
+ * grows down
+ */
+PROVIDE (__stack = 0);
+/* PROVIDE (__global = 0); */
+
+/*
+ * Initalize some symbols to be zero so we can reference them in the
+ * crt0 without core dumping. These functions are all optional, but
+ * we do this so we can have our crt0 always use them if they exist.
+ * This is so BSPs work better when using the crt0 installed with gcc.
+ * We have to initalize them twice, so we multiple object file
+ * formats, as some prepend an underscore.
+ */
+PROVIDE (hardware_exit_hook = 0);
+PROVIDE (hardware_hazard_hook = 0);
+PROVIDE (hardware_init_hook = 0);
+PROVIDE (software_init_hook = 0);
+
+SECTIONS
+{
+ . = 0x80020000;
+ .text : {
+ _ftext = . ;
+ PROVIDE (eprol = .);
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ *(.mips16.fn.*)
+ *(.mips16.call.*)
+ }
+ .init : {
+ KEEP (*(.init))
+ }
+ .fini : {
+ KEEP (*(.fini))
+ }
+ .rel.sdata : {
+ PROVIDE (__runtime_reloc_start = .);
+ *(.rel.sdata)
+ PROVIDE (__runtime_reloc_stop = .);
+ }
+ PROVIDE (etext = .);
+ _etext = .;
+
+ .eh_frame_hdr : { *(.eh_frame_hdr) }
+ .eh_frame : { KEEP (*(.eh_frame)) }
+ .gcc_except_table : { *(.gcc_except_table) }
+ .jcr : { KEEP (*(.jcr)) }
+ .ctors :
+ {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+
+ KEEP (*crtbegin.o(.ctors))
+
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ }
+
+ .dtors :
+ {
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ }
+
+ . = .;
+ .rodata : {
+ *(.rdata)
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ }
+ _fdata = ALIGN(16);
+ .data : {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ }
+ . = ALIGN(8);
+ _gp = . + 0x8000;
+ __global = _gp;
+ .lit8 : {
+ *(.lit8)
+ }
+ .lit4 : {
+ *(.lit4)
+ }
+ .sdata : {
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ }
+ . = ALIGN(4);
+ PROVIDE (edata = .);
+ _edata = .;
+ _fbss = .;
+ .sbss : {
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ *(.scommon)
+ }
+ .bss : {
+ _bss_start = . ;
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ }
+
+ . = ALIGN(32);
+ PROVIDE (end = .);
+ _end = .;
+
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to
+ the beginning of the section so we begin them at 0. */
+
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ .debug_ranges 0 : { *(.debug_ranges) }
+
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+}
Index: jmr3904-io.c
===================================================================
--- jmr3904-io.c (nonexistent)
+++ jmr3904-io.c (revision 829)
@@ -0,0 +1,104 @@
+
+
+#define READ_UINT8( _register_, _value_ ) \
+ ((_value_) = *((volatile unsigned char *)(_register_)))
+
+#define WRITE_UINT8( _register_, _value_ ) \
+ (*((volatile unsigned char *)(_register_)) = (_value_))
+
+ /* - Board specific addresses for serial chip */
+#define DIAG_BASE 0xfffff300
+#define DIAG_SLCR (DIAG_BASE+0x00)
+#define DIAG_SLSR (DIAG_BASE+0x04)
+#define DIAG_SLDICR (DIAG_BASE+0x08)
+#define DIAG_SLDISR (DIAG_BASE+0x0C)
+#define DIAG_SFCR (DIAG_BASE+0x10)
+#define DIAG_SBRG (DIAG_BASE+0x14)
+#define DIAG_TFIFO (DIAG_BASE+0x20)
+#define DIAG_RFIFO (DIAG_BASE+0x30)
+
+#define BRG_T0 0x0000
+#define BRG_T2 0x0100
+#define BRG_T4 0x0200
+#define BRG_T5 0x0300
+
+
+#define READ_UINT16( _register_, _value_ ) \
+ ((_value_) = *((volatile unsigned short *)(_register_)))
+
+#define WRITE_UINT16( _register_, _value_ ) \
+ (*((volatile unsigned short *)(_register_)) = (_value_))
+
+unsigned char
+inbyte (void)
+{
+ unsigned char c;
+ unsigned short disr;
+
+ for (;;)
+ {
+ READ_UINT16 (DIAG_SLDISR, disr);
+ if (disr & 0x0001)
+ break;
+ }
+ disr = disr & ~0x0001;
+ READ_UINT8 (DIAG_RFIFO, c);
+ WRITE_UINT16 (DIAG_SLDISR, disr);
+ return c;
+}
+
+void
+outbyte (unsigned char c)
+{
+ unsigned short disr;
+
+ for (;;)
+ {
+ READ_UINT16 (DIAG_SLDISR, disr);
+ if (disr & 0x0002)
+ break;
+ }
+ disr = disr & ~0x0002;
+ WRITE_UINT8 (DIAG_TFIFO, c);
+ WRITE_UINT16 (DIAG_SLDISR, disr);
+}
+
+/* Stuff required to setup IO on this board */
+void board_serial_init (void)
+{
+ WRITE_UINT16 (DIAG_SLCR, 0x0020);
+ WRITE_UINT16 (DIAG_SLDICR, 0x0000);
+ WRITE_UINT16 (DIAG_SFCR, 0x0000);
+ WRITE_UINT16 (DIAG_SBRG, BRG_T2 | 5);
+}
+
+/* If you want this to be initialized as part of the stuff which gets called
+ by crt0, it should be named 'hardware_init_hook'.
+ Local implementations may want to move or add to this function OR
+ do the initializations after main() is entered.
+*/
+void hardware_init_hook(void)
+{
+ board_serial_init() ;
+}
+
+/* Structure filled in by get_mem_info. Only the size field is
+ actually used (by sbrk), so the others aren't even filled in. */
+
+struct s_mem
+{
+ unsigned int size;
+ unsigned int icsize;
+ unsigned int dcsize;
+};
+
+/* mem_size is provided in the linker script so that we don't have to
+ define it here. */
+extern char _mem_size[];
+
+void
+get_mem_info (mem)
+ struct s_mem *mem;
+{
+ mem->size = (unsigned int)_mem_size;
+}
jmr3904-io.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: ddb-kseg0.ld
===================================================================
--- ddb-kseg0.ld (nonexistent)
+++ ddb-kseg0.ld (revision 829)
@@ -0,0 +1,166 @@
+/* The following TEXT start address leaves space for the monitor
+ workspace. */
+
+ENTRY(_start)
+STARTUP(crt0.o)
+OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-littlemips")
+GROUP(-lc -lpmon -lgcc)
+SEARCH_DIR(.)
+__DYNAMIC = 0;
+
+/*
+ * Allocate the stack to be at the top of memory, since the stack
+ * grows down
+ */
+PROVIDE (__stack = 0);
+/* PROVIDE (__global = 0); */
+
+/*
+ * Initalize some symbols to be zero so we can reference them in the
+ * crt0 without core dumping. These functions are all optional, but
+ * we do this so we can have our crt0 always use them if they exist.
+ * This is so BSPs work better when using the crt0 installed with gcc.
+ * We have to initalize them twice, so we multiple object file
+ * formats, as some prepend an underscore.
+ */
+PROVIDE (hardware_exit_hook = 0);
+PROVIDE (hardware_hazard_hook = 0);
+PROVIDE (hardware_init_hook = 0);
+PROVIDE (software_init_hook = 0);
+
+SECTIONS
+{
+ . = 0x80100000;
+ .text : {
+ _ftext = . ;
+ KEEP (*(.init))
+ eprol = .;
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ *(.mips16.fn.*)
+ *(.mips16.call.*)
+ PROVIDE (__runtime_reloc_start = .);
+ *(.rel.sdata)
+ PROVIDE (__runtime_reloc_stop = .);
+ KEEP (*(.fini))
+ etext = .;
+ _etext = .;
+ }
+
+ .eh_frame_hdr : { *(.eh_frame_hdr) }
+ .eh_frame : { KEEP (*(.eh_frame)) }
+ .gcc_except_table : { *(.gcc_except_table) }
+ .jcr : { KEEP (*(.jcr)) }
+ .ctors :
+ {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+
+ KEEP (*crtbegin.o(.ctors))
+
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ }
+
+ .dtors :
+ {
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ }
+
+ . = .;
+ .rdata : {
+ *(.rdata)
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ }
+ _fdata = ALIGN(16);
+ .data : {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ }
+ . = ALIGN(8);
+ _gp = . + 0x8000;
+ __global = _gp;
+ .lit8 : {
+ *(.lit8)
+ }
+ .lit4 : {
+ *(.lit4)
+ }
+ .sdata : {
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ }
+ . = ALIGN(4);
+ edata = .;
+ _edata = .;
+ _fbss = .;
+ .sbss : {
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ *(.scommon)
+ }
+ .bss : {
+ _bss_start = . ;
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ }
+
+ end = .;
+ _end = .;
+
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to
+ the beginning of the section so we begin them at 0. */
+
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ .debug_ranges 0 : { *(.debug_ranges) }
+
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+}
Index: vr4300.S
===================================================================
--- vr4300.S (nonexistent)
+++ vr4300.S (revision 829)
@@ -0,0 +1,341 @@
+/*
+ * vr4300.S -- CPU specific support routines
+ *
+ * Copyright (c) 1995,1996 Cygnus Support
+ *
+ * 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.
+ */
+
+#ifndef __mips64
+ .set mips3
+#endif
+#ifdef __mips16
+/* This file contains 32 bit assembly code. */
+ .set nomips16
+#endif
+
+#include "regs.S"
+
+ .text
+ .align 2
+
+ # Taken from "R4300 Preliminary RISC Processor Specification
+ # Revision 2.0 January 1995" page 39: "The Count
+ # register... increments at a constant rate... at one-half the
+ # PClock speed."
+ # We can use this fact to provide small polled delays.
+ .globl __cpu_timer_poll
+ .ent __cpu_timer_poll
+__cpu_timer_poll:
+ .set noreorder
+ # in: a0 = (unsigned int) number of PClock ticks to wait for
+ # out: void
+
+ # The Vr4300 counter updates at half PClock, so divide by 2 to
+ # get counter delta:
+ bnezl a0, 1f # continue if delta non-zero
+ srl a0, a0, 1 # divide ticks by 2 {DELAY SLOT}
+ # perform a quick return to the caller:
+ j ra
+ nop # {DELAY SLOT}
+1:
+ mfc0 v0, C0_COUNT # get current counter value
+ nop
+ nop
+ # We cannot just do the simple test, of adding our delta onto
+ # the current value (ignoring overflow) and then checking for
+ # equality. The counter is incrementing every two PClocks,
+ # which means the counter value can change between
+ # instructions, making it hard to sample at the exact value
+ # desired.
+
+ # However, we do know that our entry delta value is less than
+ # half the number space (since we divide by 2 on entry). This
+ # means we can use a difference in signs to indicate timer
+ # overflow.
+ addu a0, v0, a0 # unsigned add (ignore overflow)
+ # We know have our end value (which will have been
+ # sign-extended to fill the 64bit register value).
+2:
+ # get current counter value:
+ mfc0 v0, C0_COUNT
+ nop
+ nop
+ # This is an unsigned 32bit subtraction:
+ subu v0, a0, v0 # delta = (end - now) {DELAY SLOT}
+ bgtzl v0, 2b # looping back is most likely
+ nop
+ # We have now been delayed (in the foreground) for AT LEAST
+ # the required number of counter ticks.
+ j ra # return to caller
+ nop # {DELAY SLOT}
+ .set reorder
+ .end __cpu_timer_poll
+
+ # Flush the processor caches to memory:
+
+ .globl __cpu_flush
+ .ent __cpu_flush
+__cpu_flush:
+ .set noreorder
+ # NOTE: The Vr4300 *CANNOT* have any secondary cache (bit 17
+ # of the CONFIG registered is hard-wired to 1). We just
+ # provide code to flush the Data and Instruction caches.
+
+ # Even though the Vr4300 has hard-wired cache and cache line
+ # sizes, we still interpret the relevant Config register
+ # bits. This allows this code to be used for other conforming
+ # MIPS architectures if desired.
+
+ # Get the config register
+ mfc0 a0, C0_CONFIG
+ nop
+ nop
+ li a1, 1 # a useful constant
+ #
+ srl a2, a0, 9 # bits 11..9 for instruction cache size
+ andi a2, a2, 0x7 # 3bits of information
+ add a2, a2, 12 # get full power-of-2 value
+ sllv a2, a1, a2 # instruction cache size
+ #
+ srl a3, a0, 6 # bits 8..6 for data cache size
+ andi a3, a3, 0x7 # 3bits of information
+ add a3, a3, 12 # get full power-of-2 value
+ sllv a3, a1, a3 # data cache size
+ #
+ li a1, (1 << 5) # check IB (instruction cache line size)
+ and a1, a0, a1 # mask against the CONFIG register value
+ beqz a1, 1f # branch on result of delay slot operation
+ nop
+ li a1, 32 # non-zero, then 32bytes
+ j 2f # continue
+ nop
+1:
+ li a1, 16 # 16bytes
+2:
+ #
+ li t0, (1 << 4) # check DB (data cache line size)
+ and a0, a0, t0 # mask against the CONFIG register value
+ beqz a0, 3f # branch on result of delay slot operation
+ nop
+ li a0, 32 # non-zero, then 32bytes
+ j 4f # continue
+ nop
+3:
+ li a0, 16 # 16bytes
+4:
+ #
+ # a0 = data cache line size
+ # a1 = instruction cache line size
+ # a2 = instruction cache size
+ # a3 = data cache size
+ #
+ lui t0, ((K0BASE >> 16) & 0xFFFF)
+ ori t0, t0, (K0BASE & 0xFFFF)
+ addu t1, t0, a2 # end cache address
+ subu t2, a1, 1 # line size mask
+ not t2 # invert the mask
+ and t3, t0, t2 # get start address
+ addu t1, -1
+ and t1, t2 # get end address
+5:
+ cache INDEX_INVALIDATE_I,0(t3)
+ bne t3, t1, 5b
+ addu t3, a1
+ #
+ addu t1, t0, a3 # end cache address
+ subu t2, a0, 1 # line size mask
+ not t2 # invert the mask
+ and t3, t0, t2 # get start address
+ addu t1, -1
+ and t1, t2 # get end address
+6:
+ cache INDEX_WRITEBACK_INVALIDATE_D,0(t3)
+ bne t3, t1, 6b
+ addu t3, a0
+ #
+ j ra # return to the caller
+ nop
+ .set reorder
+ .end __cpu_flush
+
+ # NOTE: This variable should *NOT* be addressed relative to
+ # the $gp register since this code is executed before $gp is
+ # initialised... hence we leave it in the text area. This will
+ # cause problems if this routine is ever ROMmed:
+
+ .globl __buserr_cnt
+__buserr_cnt:
+ .word 0
+ .align 3
+__k1_save:
+ .word 0
+ .word 0
+ .align 2
+
+ .ent __buserr
+ .globl __buserr
+__buserr:
+ .set noat
+ .set noreorder
+ # k0 and k1 available for use:
+ mfc0 k0,C0_CAUSE
+ nop
+ nop
+ andi k0,k0,0x7c
+ sub k0,k0,7 << 2
+ beq k0,$0,__buserr_do
+ nop
+ # call the previous handler
+ la k0,__previous
+ jr k0
+ nop
+ #
+__buserr_do:
+ # TODO: check that the cause is indeed a bus error
+ # - if not then just jump to the previous handler
+ la k0,__k1_save
+ sd k1,0(k0)
+ #
+ la k1,__buserr_cnt
+ lw k0,0(k1) # increment counter
+ addu k0,1
+ sw k0,0(k1)
+ #
+ la k0,__k1_save
+ ld k1,0(k0)
+ #
+ mfc0 k0,C0_EPC
+ nop
+ nop
+ addu k0,k0,4 # skip offending instruction
+ mtc0 k0,C0_EPC # update EPC
+ nop
+ nop
+ eret
+# j k0
+# rfe
+ .set reorder
+ .set at
+ .end __buserr
+
+__exception_code:
+ .set noreorder
+ lui k0,%hi(__buserr)
+ daddiu k0,k0,%lo(__buserr)
+ jr k0
+ nop
+ .set reorder
+__exception_code_end:
+
+ .data
+__previous:
+ .space (__exception_code_end - __exception_code)
+ # This subtracting two addresses is working
+ # but is not garenteed to continue working.
+ # The assemble reserves the right to put these
+ # two labels into different frags, and then
+ # cant take their difference.
+
+ .text
+
+ .ent __default_buserr_handler
+ .globl __default_buserr_handler
+__default_buserr_handler:
+ .set noreorder
+ # attach our simple bus error handler:
+ # in: void
+ # out: void
+ mfc0 a0,C0_SR
+ nop
+ li a1,SR_BEV
+ and a1,a1,a0
+ beq a1,$0,baseaddr
+ lui a0,0x8000 # delay slot
+ lui a0,0xbfc0
+ daddiu a0,a0,0x0200
+baseaddr:
+ daddiu a0,a0,0x0180
+ # a0 = base vector table address
+ la a1,__exception_code_end
+ la a2,__exception_code
+ subu a1,a1,a2
+ la a3,__previous
+ # there must be a better way of doing this????
+copyloop:
+ lw v0,0(a0)
+ sw v0,0(a3)
+ lw v0,0(a2)
+ sw v0,0(a0)
+ daddiu a0,a0,4
+ daddiu a2,a2,4
+ daddiu a3,a3,4
+ subu a1,a1,4
+ bne a1,$0,copyloop
+ nop
+ la a0,__buserr_cnt
+ sw $0,0(a0)
+ j ra
+ nop
+ .set reorder
+ .end __default_buserr_handler
+
+ .ent __restore_buserr_handler
+ .globl __restore_buserr_handler
+__restore_buserr_handler:
+ .set noreorder
+ # restore original (monitor) bus error handler
+ # in: void
+ # out: void
+ mfc0 a0,C0_SR
+ nop
+ li a1,SR_BEV
+ and a1,a1,a0
+ beq a1,$0,res_baseaddr
+ lui a0,0x8000 # delay slot
+ lui a0,0xbfc0
+ daddiu a0,a0,0x0200
+res_baseaddr:
+ daddiu a0,a0,0x0180
+ # a0 = base vector table address
+ la a1,__exception_code_end
+ la a3,__exception_code
+ subu a1,a1,a3
+ la a3,__previous
+ # there must be a better way of doing this????
+res_copyloop:
+ lw v0,0(a3)
+ sw v0,0(a0)
+ daddiu a0,a0,4
+ daddiu a3,a3,4
+ subu a1,a1,4
+ bne a1,$0,res_copyloop
+ nop
+ j ra
+ nop
+ .set reorder
+ .end __restore_buserr_handler
+
+ .ent __buserr_count
+ .globl __buserr_count
+__buserr_count:
+ .set noreorder
+ # restore original (monitor) bus error handler
+ # in: void
+ # out: unsigned int __buserr_cnt
+ la v0,__buserr_cnt
+ lw v0,0(v0)
+ j ra
+ nop
+ .set reorder
+ .end __buserr_count
+
+/* EOF vr4300.S */
vr4300.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: test.c
===================================================================
--- test.c (nonexistent)
+++ test.c (revision 829)
@@ -0,0 +1,13 @@
+main()
+{
+ outbyte ('&');
+ outbyte ('@');
+ outbyte ('$');
+ outbyte ('%');
+
+ /* whew, we made it */
+
+ print ("\r\nDone...");
+
+ return;
+}
test.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: entry.S
===================================================================
--- entry.S (nonexistent)
+++ entry.S (revision 829)
@@ -0,0 +1,281 @@
+/* entry.S - exception handler for emulating MIPS16 'entry' and 'exit'
+ pseudo-instructions. These instructions are generated by the compiler
+ when the -mentry switch is used. The instructions are not implemented
+ in the MIPS16 CPU; hence the exception handler that emulates them.
+
+ This module contains the following public functions:
+
+ * void __install_entry_handler(void);
+
+ This function installs the entry/exit exception handler. It should
+ be called before executing any MIPS16 functions that were compiled with
+ -mentry, typically before main() is called.
+
+ * void __remove_entry_handler(void);
+
+ This function removes the entry/exit exception handler. It should
+ be called when the program is exiting, or when it is known that no
+ more MIPS16 functions compiled with -mentry will be called.
+*/
+
+#ifdef __mips16
+/* This file contains 32 bit assembly code. */
+ .set nomips16
+#endif
+
+#include "regs.S"
+
+#define CAUSE_EXCMASK 0x3c /* mask for ExcCode in Cause Register */
+#define EXC_RI 0x28 /* 101000 == 10 << 2 */
+
+/* Set DEBUG to 1 to enable recording of the last 16 interrupt causes. */
+
+#define DEBUG 0
+
+#if DEBUG
+
+ .sdata
+int_count:
+ .space 4 /* interrupt count modulo 16 */
+int_cause:
+ .space 4*16 /* last 16 interrupt causes */
+#endif
+
+ .text
+
+ .set noreorder /* Do NOT reorder instructions */
+
+
+/* __entry_exit_handler - the reserved instruction exception handler
+ that emulates the entry and exit instruction. */
+
+__entry_exit_handler:
+ .set noat /* Do NOT use at register */
+#if DEBUG
+/* Must avoid using 'la' pseudo-op because it uses gp register, which
+ may not have a good value in an exception handler. */
+
+# la k0, int_count /* intcount = (intcount + 1) & 0xf */
+ lui k0 ,%hi(int_count)
+ addiu k0, k0 ,%lo(int_count)
+ lw k1, (k0)
+ addiu k1, k1, 1
+ andi k1, k1, 0x0f
+ sw k1, (k0)
+# la k0, int_cause /* k1 = &int_cause[intcount] */
+ lui k0, %hi(int_cause)
+ addiu k0, k0, %lo(int_cause)
+ sll k1, k1, 2
+ add k1, k1, k0
+#endif
+ mfc0 k0, C0_CAUSE /* Fetch cause */
+#if DEBUG
+ sw k0, -4(k1) /* Save exception cause in buffer */
+#endif
+ mfc0 k1, C0_EPC /* Check for Reserved Inst. without */
+ and k0, CAUSE_EXCMASK /* destroying any register */
+ subu k0, EXC_RI
+ bne k0, zero, check_others /* Sorry, go do something else */
+
+ and k0, k1, 1 /* Check for TR mode (pc.0 = 1) */
+ beq k0, zero, ri_in_32 /* Sorry, RI in 32-bit mode */
+ xor k1, 1
+
+/* Since we now are going to emulate or die, we can use all the T-registers */
+/* that MIPS16 does not use (at, t0-t8), and we don't have to save them. */
+
+ .set at /* Now it's ok to use at again */
+
+#if 0
+ j leave
+ rfe
+#endif
+
+ lhu t0, 0(k1) /* Fetch the offending instruction */
+ xor t8, k1, 1 /* Prepare t8 for exit */
+ and t1, t0, 0xf81f /* Check for entry/exit opcode */
+ bne t1, 0xe809, other_ri
+
+deareg: and t1, t0, 0x0700 /* Isolate the three a-bits */
+ srl t1, 6 /* Adjust them so x4 is applied */
+ slt t2, t1, 17 /* See if this is the exit instruction */
+ beqz t2, doexit
+ la t2, savea
+ subu t2, t1
+ jr t2 /* Jump into the instruction table */
+ rfe /* We run the rest in user-mode */
+
+ /* This is the entry instruction! */
+ sw a3, 12(sp) /* 4: a0-a3 saved */
+ sw a2, 8(sp) /* 3: a0-a2 saved */
+ sw a1, 4(sp) /* 2: a0-a1 saved */
+ sw a0, 0(sp) /* 1: a0 saved */
+savea: /* 0: No arg regs saved */
+
+dera: and t1, t0, 0x0020 /* Isolate the save-ra bit */
+ move t7, sp /* Temporary SP */
+ beq t1, zero, desreg
+ subu sp, 32 /* Default SP adjustment */
+ sw ra, -4(t7)
+ subu t7, 4
+
+desreg: and t1, t0, 0x00c0 /* Isolate the two s-bits */
+ beq t1, zero, leave
+ subu t1, 0x0040
+ beq t1, zero, leave /* Only one to save... */
+ sw s0, -4(t7) /* Do the first one */
+ sw s1, -8(t7) /* Do the last one */
+
+leave: jr t8 /* Exit to unmodified EPC */
+ nop /* Urgh - the only nop!! */
+
+doexf0: mtc1 v0,$f0 /* Copy float value */
+ b doex2
+
+doexf1: mtc1 v1,$f0 /* Copy double value */
+ mtc1 v0,$f1
+ b doex2
+
+doexit: slt t2, t1, 21
+ beq t2, zero, doexf0
+ slt t2, t1, 25
+ beq t2, zero, doexf1
+
+doex2: and t1, t0, 0x0020 /* Isolate ra bit */
+ beq t1, zero, dxsreg /* t1 holds ra-bit */
+ addu t7, sp, 32 /* Temporary SP */
+ lw ra, -4(t7)
+ subu t7, 4
+
+dxsreg: and t1, t0, 0x00c0 /* Isolate the two s-bits */
+ beq t1, zero, leavex
+ subu t1, 0x0040
+ beq t1, zero, leavex /* Only one to save... */
+ lw s0, -4(t7) /* Do the first one */
+ lw s1, -8(t7) /* Do the last one */
+
+leavex: jr ra /* Exit to ra */
+ addu sp, 32 /* Clean up stack pointer */
+
+/* Come here for exceptions we can't handle. */
+
+ri_in_32:
+other_ri:
+check_others: /* call the previous handler */
+ la k0,__previous
+ jr k0
+ nop
+
+__exception_code:
+ .set noreorder
+ la k0, __entry_exit_handler
+# lui k0, %hi(exception)
+# addiu k0, k0, %lo(exception)
+ jr k0
+ nop
+ .set reorder
+__exception_code_end:
+
+ .data
+__previous:
+ .space (__exception_code_end - __exception_code)
+ .text
+
+
+/* void __install_entry_handler(void)
+
+ Install our entry/exit reserved instruction exception handler.
+*/
+ .ent __install_entry_handler
+ .globl __install_entry_handler
+__install_entry_handler:
+ .set noreorder
+ mfc0 a0,C0_SR
+ nop
+ li a1,SR_BEV
+ and a1,a1,a0
+ beq a1,$0,baseaddr
+ lui a0,0x8000 /* delay slot */
+ lui a0,0xbfc0
+ addiu a0,a0,0x0100
+baseaddr:
+ addiu a0,a0,0x080 /* a0 = base vector table address */
+ li a1,(__exception_code_end - __exception_code)
+ la a2,__exception_code
+ la a3,__previous
+/* there must be a better way of doing this???? */
+copyloop:
+ lw v0,0(a0)
+ sw v0,0(a3)
+ lw v0,0(a2)
+ sw v0,0(a0)
+ addiu a0,a0,4
+ addiu a2,a2,4
+ addiu a3,a3,4
+ subu a1,a1,4
+ bne a1,$0,copyloop
+ nop
+ j ra
+ nop
+ .set reorder
+ .end __install_entry_handler
+
+
+/* void __remove_entry_handler(void);
+
+ Remove our entry/exit reserved instruction exception handler.
+*/
+
+ .ent __remove_entry_handler
+ .globl __remove_entry_handler
+__remove_entry_handler:
+ .set noreorder
+
+ mfc0 a0,C0_SR
+ nop
+ li a1,SR_BEV
+ and a1,a1,a0
+ beq a1,$0,res_baseaddr
+ lui a0,0x8000 /* delay slot */
+ lui a0,0xbfc0
+ addiu a0,a0,0x0200
+res_baseaddr:
+ addiu a0,a0,0x0180 /* a0 = base vector table address */
+ li a1,(__exception_code_end - __exception_code)
+ la a3,__previous
+
+/* there must be a better way of doing this???? */
+res_copyloop:
+ lw v0,0(a3)
+ sw v0,0(a0)
+ addiu a0,a0,4
+ addiu a3,a3,4
+ subu a1,a1,4
+ bne a1,$0,res_copyloop
+ nop
+ j ra
+ nop
+ .set reorder
+ .end __remove_entry_handler
+
+
+/* software_init_hook - install entry/exit handler and arrange to have it
+ removed at exit. This function is called by crt0.S. */
+
+ .text
+ .globl software_init_hook
+ .ent software_init_hook
+software_init_hook:
+ .set noreorder
+ subu sp, sp, 8 /* allocate stack space */
+ sw ra, 4(sp) /* save return address */
+ jal __install_entry_handler /* install entry/exit handler */
+ nop
+ lui a0, %hi(__remove_entry_handler) /* arrange for exit to */
+ jal atexit /* de-install handler */
+ addiu a0, a0, %lo(__remove_entry_handler) /* delay slot */
+ lw ra, 4(sp) /* get return address */
+ j ra /* return */
+ addu sp, sp, 8 /* deallocate stack */
+ .set reorder
+ .end software_init_hook
entry.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: jmr3904app.ld
===================================================================
--- jmr3904app.ld (nonexistent)
+++ jmr3904app.ld (revision 829)
@@ -0,0 +1,168 @@
+/* Linker script forJMR 3904 board */
+
+ENTRY(_start)
+STARTUP(crt0.o)
+OUTPUT_ARCH("mips:3000")
+OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-littlemips")
+GROUP(-lc -ljmr3904 -lgcc)
+SEARCH_DIR(.)
+__DYNAMIC = 0;
+
+PROVIDE (_mem_size = 0x100000); /* JMR3904 comes as standard with 512k of RAM */
+
+/* PROVIDE (__global = 0); */
+
+/*
+ * Initalize some symbols to be zero so we can reference them in the
+ * crt0 without core dumping. These functions are all optional, but
+ * we do this so we can have our crt0 always use them if they exist.
+ * This is so BSPs work better when using the crt0 installed with gcc.
+ * We have to initalize them twice, so we multiple object file
+ * formats, as some prepend an underscore.
+ */
+PROVIDE (hardware_exit_hook = 0);
+PROVIDE (hardware_hazard_hook = 0);
+PROVIDE (hardware_init_hook = 0);
+PROVIDE (software_init_hook = 0);
+
+SECTIONS
+{
+ . = 0x80008000;
+ /* This is NOT the address which fits with the monitor from jmr. */
+ /* It fits the Cygmon ROMS */
+ .text : {
+ _ftext = . ;
+ KEEP (*(.init))
+ eprol = .;
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ *(.mips16.fn.*)
+ *(.mips16.call.*)
+ PROVIDE (__runtime_reloc_start = .);
+ *(.rel.sdata)
+ PROVIDE (__runtime_reloc_stop = .);
+ KEEP (*(.fini))
+ etext = .;
+ _etext = .;
+ }
+
+ .eh_frame_hdr : { *(.eh_frame_hdr) }
+ .eh_frame : { KEEP (*(.eh_frame)) }
+ .gcc_except_table : { *(.gcc_except_table) }
+ .jcr : { KEEP (*(.jcr)) }
+ .ctors :
+ {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+
+ KEEP (*crtbegin.o(.ctors))
+
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ }
+
+ .dtors :
+ {
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ }
+
+ . = .;
+ .rodata : {
+ *(.rdata)
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ }
+ _fdata = ALIGN(16);
+ .data : {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ }
+ . = ALIGN(8);
+ _gp = . + 0x8000;
+ __global = _gp;
+ .lit8 : {
+ *(.lit8)
+ }
+ .lit4 : {
+ *(.lit4)
+ }
+ .sdata : {
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ }
+ . = ALIGN(4);
+ edata = .;
+ _edata = .;
+ _fbss = .;
+ .sbss : {
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ *(.scommon)
+ }
+ .bss : {
+ _bss_start = . ;
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ . += 0x2000 ; /* 8k bytes of stack. */
+ __stack = ALIGN(64) ;
+ . = __stack ;
+ }
+
+ end = .;
+ _end = .;
+
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to
+ the beginning of the section so we begin them at 0. */
+
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ .debug_ranges 0 : { *(.debug_ranges) }
+
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+}
Index: cfe_api.c
===================================================================
--- cfe_api.c (nonexistent)
+++ cfe_api.c (revision 829)
@@ -0,0 +1,534 @@
+/* From: CFE Id: cfe_api.c,v 1.16 2002/07/09 23:29:11 cgd Exp $ */
+
+/*
+ * Copyright 2000, 2001, 2002
+ * Broadcom Corporation. All rights reserved.
+ *
+ * This software is furnished under license and may be used and copied only
+ * in accordance with the following terms and conditions. Subject to these
+ * conditions, you may download, copy, install, use, modify and distribute
+ * modified or unmodified copies of this software in source and/or binary
+ * form. No title or ownership is transferred hereby.
+ *
+ * 1) Any source code used, modified or distributed must reproduce and
+ * retain this copyright notice and list of conditions as they appear in
+ * the source file.
+ *
+ * 2) No right is granted to use any trade name, trademark, or logo of
+ * Broadcom Corporation. The "Broadcom Corporation" name may not be
+ * used to endorse or promote products derived from this software
+ * without the prior written permission of Broadcom Corporation.
+ *
+ * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+ * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE
+ * FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE
+ * LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/* *********************************************************************
+ *
+ * Broadcom Common Firmware Environment (CFE)
+ *
+ * Device Function stubs File: cfe_api.c
+ *
+ * This module contains device function stubs (small routines to
+ * call the standard "iocb" interface entry point to CFE).
+ * There should be one routine here per iocb function call.
+ *
+ * Authors: Mitch Lichtenberg, Chris Demetriou
+ *
+ ********************************************************************* */
+
+#include "cfe_api.h"
+#include "cfe_api_int.h"
+
+/* Cast from a native pointer to a cfe_xptr_t and back. */
+#define XPTR_FROM_NATIVE(n) ((cfe_xptr_t) (intptr_t) (n))
+#define NATIVE_FROM_XPTR(x) ((void *) (intptr_t) (x))
+
+#ifdef CFE_API_IMPL_NAMESPACE
+#define cfe_iocb_dispatch(a) __cfe_iocb_dispatch(a)
+#endif
+int cfe_iocb_dispatch(cfe_xiocb_t *xiocb);
+
+#if defined(CFE_API_common) || defined(CFE_API_ALL)
+/*
+ * Declare the dispatch function with args of "intptr_t".
+ * This makes sure whatever model we're compiling in
+ * puts the pointers in a single register. For example,
+ * combining -mlong64 and -mips1 or -mips2 would lead to
+ * trouble, since the handle and IOCB pointer will be
+ * passed in two registers each, and CFE expects one.
+ */
+
+static int (*cfe_dispfunc)(intptr_t handle, intptr_t xiocb) = 0;
+static cfe_xuint_t cfe_handle = 0;
+
+int
+cfe_init(cfe_xuint_t handle, cfe_xuint_t ept)
+{
+ cfe_dispfunc = NATIVE_FROM_XPTR(ept);
+ cfe_handle = handle;
+ return 0;
+}
+
+int
+cfe_iocb_dispatch(cfe_xiocb_t *xiocb)
+{
+ if (!cfe_dispfunc) return -1;
+ return (*cfe_dispfunc)((intptr_t)cfe_handle, (intptr_t)xiocb);
+}
+#endif /* CFE_API_common || CFE_API_ALL */
+
+#if defined(CFE_API_close) || defined(CFE_API_ALL)
+int
+cfe_close(int handle)
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_DEV_CLOSE;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = handle;
+ xiocb.xiocb_flags = 0;
+ xiocb.xiocb_psize = 0;
+
+ cfe_iocb_dispatch(&xiocb);
+
+ return xiocb.xiocb_status;
+
+}
+#endif /* CFE_API_close || CFE_API_ALL */
+
+#if defined(CFE_API_cpu_start) || defined(CFE_API_ALL)
+int
+cfe_cpu_start(int cpu, void (*fn)(void), long sp, long gp, long a1)
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_FW_CPUCTL;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = 0;
+ xiocb.xiocb_flags = 0;
+ xiocb.xiocb_psize = sizeof(xiocb_cpuctl_t);
+ xiocb.plist.xiocb_cpuctl.cpu_number = cpu;
+ xiocb.plist.xiocb_cpuctl.cpu_command = CFE_CPU_CMD_START;
+ xiocb.plist.xiocb_cpuctl.gp_val = gp;
+ xiocb.plist.xiocb_cpuctl.sp_val = sp;
+ xiocb.plist.xiocb_cpuctl.a1_val = a1;
+ xiocb.plist.xiocb_cpuctl.start_addr = (long)fn;
+
+ cfe_iocb_dispatch(&xiocb);
+
+ return xiocb.xiocb_status;
+}
+#endif /* CFE_API_cpu_start || CFE_API_ALL */
+
+#if defined(CFE_API_cpu_stop) || defined(CFE_API_ALL)
+int
+cfe_cpu_stop(int cpu)
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_FW_CPUCTL;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = 0;
+ xiocb.xiocb_flags = 0;
+ xiocb.xiocb_psize = sizeof(xiocb_cpuctl_t);
+ xiocb.plist.xiocb_cpuctl.cpu_number = cpu;
+ xiocb.plist.xiocb_cpuctl.cpu_command = CFE_CPU_CMD_STOP;
+
+ cfe_iocb_dispatch(&xiocb);
+
+ return xiocb.xiocb_status;
+}
+#endif /* CFE_API_cpu_stop || CFE_API_ALL */
+
+#if defined(CFE_API_enumenv) || defined(CFE_API_ALL)
+int
+cfe_enumenv(int idx, char *name, int namelen, char *val, int vallen)
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_ENV_SET;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = 0;
+ xiocb.xiocb_flags = 0;
+ xiocb.xiocb_psize = sizeof(xiocb_envbuf_t);
+ xiocb.plist.xiocb_envbuf.enum_idx = idx;
+ xiocb.plist.xiocb_envbuf.name_ptr = XPTR_FROM_NATIVE(name);
+ xiocb.plist.xiocb_envbuf.name_length = namelen;
+ xiocb.plist.xiocb_envbuf.val_ptr = XPTR_FROM_NATIVE(val);
+ xiocb.plist.xiocb_envbuf.val_length = vallen;
+
+ cfe_iocb_dispatch(&xiocb);
+
+ return xiocb.xiocb_status;
+}
+#endif /* CFE_API_enumenv || CFE_API_ALL */
+
+#if defined(CFE_API_enummem) || defined(CFE_API_ALL)
+int
+cfe_enummem(int idx, int flags, cfe_xuint_t *start, cfe_xuint_t *length,
+ cfe_xuint_t *type)
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_FW_MEMENUM;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = 0;
+ xiocb.xiocb_flags = flags;
+ xiocb.xiocb_psize = sizeof(xiocb_meminfo_t);
+ xiocb.plist.xiocb_meminfo.mi_idx = idx;
+
+ cfe_iocb_dispatch(&xiocb);
+
+ if (xiocb.xiocb_status < 0)
+ return xiocb.xiocb_status;
+
+ *start = xiocb.plist.xiocb_meminfo.mi_addr;
+ *length = xiocb.plist.xiocb_meminfo.mi_size;
+ *type = xiocb.plist.xiocb_meminfo.mi_type;
+
+ return 0;
+}
+#endif /* CFE_API_enummem || CFE_API_ALL */
+
+#if defined(CFE_API_exit) || defined(CFE_API_ALL)
+int
+cfe_exit(int warm, int status)
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_FW_RESTART;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = 0;
+ xiocb.xiocb_flags = warm ? CFE_FLG_WARMSTART : 0;
+ xiocb.xiocb_psize = sizeof(xiocb_exitstat_t);
+ xiocb.plist.xiocb_exitstat.status = status;
+
+ cfe_iocb_dispatch(&xiocb);
+
+ return xiocb.xiocb_status;
+}
+#endif /* CFE_API_exit || CFE_API_ALL */
+
+#if defined(CFE_API_flushcache) || defined(CFE_API_ALL)
+int
+cfe_flushcache(int flg)
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_FW_FLUSHCACHE;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = 0;
+ xiocb.xiocb_flags = flg;
+ xiocb.xiocb_psize = 0;
+
+ cfe_iocb_dispatch(&xiocb);
+
+ return xiocb.xiocb_status;
+}
+#endif /* CFE_API_flushcache || CFE_API_ALL */
+
+#if defined(CFE_API_getdevinfo) || defined(CFE_API_ALL)
+int
+cfe_getdevinfo(char *name)
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_DEV_GETINFO;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = 0;
+ xiocb.xiocb_flags = 0;
+ xiocb.xiocb_psize = sizeof(xiocb_buffer_t);
+ xiocb.plist.xiocb_buffer.buf_offset = 0;
+ xiocb.plist.xiocb_buffer.buf_ptr = XPTR_FROM_NATIVE(name);
+ xiocb.plist.xiocb_buffer.buf_length = cfe_strlen(name);
+
+ cfe_iocb_dispatch(&xiocb);
+
+ if (xiocb.xiocb_status < 0)
+ return xiocb.xiocb_status;
+ return xiocb.plist.xiocb_buffer.buf_devflags;
+}
+#endif /* CFE_API_getdevinfo || CFE_API_ALL */
+
+#if defined(CFE_API_getenv) || defined(CFE_API_ALL)
+int
+cfe_getenv(char *name, char *dest, int destlen)
+{
+ cfe_xiocb_t xiocb;
+
+ *dest = 0;
+
+ xiocb.xiocb_fcode = CFE_CMD_ENV_GET;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = 0;
+ xiocb.xiocb_flags = 0;
+ xiocb.xiocb_psize = sizeof(xiocb_envbuf_t);
+ xiocb.plist.xiocb_envbuf.enum_idx = 0;
+ xiocb.plist.xiocb_envbuf.name_ptr = XPTR_FROM_NATIVE(name);
+ xiocb.plist.xiocb_envbuf.name_length = cfe_strlen(name);
+ xiocb.plist.xiocb_envbuf.val_ptr = XPTR_FROM_NATIVE(dest);
+ xiocb.plist.xiocb_envbuf.val_length = destlen;
+
+ cfe_iocb_dispatch(&xiocb);
+
+ return xiocb.xiocb_status;
+}
+#endif /* CFE_API_getenv || CFE_API_ALL */
+
+#if defined(CFE_API_getfwinfo) || defined(CFE_API_ALL)
+int
+cfe_getfwinfo(cfe_fwinfo_t *info)
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_FW_GETINFO;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = 0;
+ xiocb.xiocb_flags = 0;
+ xiocb.xiocb_psize = sizeof(xiocb_fwinfo_t);
+
+ cfe_iocb_dispatch(&xiocb);
+
+ if (xiocb.xiocb_status < 0)
+ return xiocb.xiocb_status;
+
+ info->fwi_version = xiocb.plist.xiocb_fwinfo.fwi_version;
+ info->fwi_totalmem = xiocb.plist.xiocb_fwinfo.fwi_totalmem;
+ info->fwi_flags = xiocb.plist.xiocb_fwinfo.fwi_flags;
+ info->fwi_boardid = xiocb.plist.xiocb_fwinfo.fwi_boardid;
+ info->fwi_bootarea_va = xiocb.plist.xiocb_fwinfo.fwi_bootarea_va;
+ info->fwi_bootarea_pa = xiocb.plist.xiocb_fwinfo.fwi_bootarea_pa;
+ info->fwi_bootarea_size = xiocb.plist.xiocb_fwinfo.fwi_bootarea_size;
+#if 0
+ info->fwi_reserved1 = xiocb.plist.xiocb_fwinfo.fwi_reserved1;
+ info->fwi_reserved2 = xiocb.plist.xiocb_fwinfo.fwi_reserved2;
+ info->fwi_reserved3 = xiocb.plist.xiocb_fwinfo.fwi_reserved3;
+#endif
+
+ return 0;
+}
+#endif /* CFE_API_getfwinfo || CFE_API_ALL */
+
+#if defined(CFE_API_getstdhandle) || defined(CFE_API_ALL)
+int
+cfe_getstdhandle(int flg)
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_DEV_GETHANDLE;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = 0;
+ xiocb.xiocb_flags = flg;
+ xiocb.xiocb_psize = 0;
+
+ cfe_iocb_dispatch(&xiocb);
+
+ if (xiocb.xiocb_status < 0)
+ return xiocb.xiocb_status;
+ return xiocb.xiocb_handle;
+
+}
+#endif /* CFE_API_getstdhandle || CFE_API_ALL */
+
+#if defined(CFE_API_getticks) || defined(CFE_API_ALL)
+int64_t
+#ifdef CFE_API_IMPL_NAMESPACE
+__cfe_getticks(void)
+#else
+cfe_getticks(void)
+#endif
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_FW_GETTIME;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = 0;
+ xiocb.xiocb_flags = 0;
+ xiocb.xiocb_psize = sizeof(xiocb_time_t);
+ xiocb.plist.xiocb_time.ticks = 0;
+
+ cfe_iocb_dispatch(&xiocb);
+
+ return xiocb.plist.xiocb_time.ticks;
+
+}
+#endif /* CFE_API_getticks || CFE_API_ALL */
+
+#if defined(CFE_API_inpstat) || defined(CFE_API_ALL)
+int
+cfe_inpstat(int handle)
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_DEV_INPSTAT;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = handle;
+ xiocb.xiocb_flags = 0;
+ xiocb.xiocb_psize = sizeof(xiocb_inpstat_t);
+ xiocb.plist.xiocb_inpstat.inp_status = 0;
+
+ cfe_iocb_dispatch(&xiocb);
+
+ if (xiocb.xiocb_status < 0)
+ return xiocb.xiocb_status;
+ return xiocb.plist.xiocb_inpstat.inp_status;
+
+}
+#endif /* CFE_API_inpstat || CFE_API_ALL */
+
+#if defined(CFE_API_ioctl) || defined(CFE_API_ALL)
+int
+cfe_ioctl(int handle, unsigned int ioctlnum, unsigned char *buffer, int length,
+ int *retlen, cfe_xuint_t offset)
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_DEV_IOCTL;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = handle;
+ xiocb.xiocb_flags = 0;
+ xiocb.xiocb_psize = sizeof(xiocb_buffer_t);
+ xiocb.plist.xiocb_buffer.buf_offset = offset;
+ xiocb.plist.xiocb_buffer.buf_ioctlcmd = ioctlnum;
+ xiocb.plist.xiocb_buffer.buf_ptr = XPTR_FROM_NATIVE(buffer);
+ xiocb.plist.xiocb_buffer.buf_length = length;
+
+ cfe_iocb_dispatch(&xiocb);
+
+ if (retlen)
+ *retlen = xiocb.plist.xiocb_buffer.buf_retlen;
+ return xiocb.xiocb_status;
+}
+#endif /* CFE_API_ioctl || CFE_API_ALL */
+
+#if defined(CFE_API_open) || defined(CFE_API_ALL)
+int
+cfe_open(char *name)
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_DEV_OPEN;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = 0;
+ xiocb.xiocb_flags = 0;
+ xiocb.xiocb_psize = sizeof(xiocb_buffer_t);
+ xiocb.plist.xiocb_buffer.buf_offset = 0;
+ xiocb.plist.xiocb_buffer.buf_ptr = XPTR_FROM_NATIVE(name);
+ xiocb.plist.xiocb_buffer.buf_length = cfe_strlen(name);
+
+ cfe_iocb_dispatch(&xiocb);
+
+ if (xiocb.xiocb_status < 0)
+ return xiocb.xiocb_status;
+ return xiocb.xiocb_handle;
+}
+#endif /* CFE_API_open || CFE_API_ALL */
+
+#if defined(CFE_API_read) || defined(CFE_API_ALL)
+int
+cfe_read(int handle, unsigned char *buffer, int length)
+{
+ return cfe_readblk(handle, 0, buffer, length);
+}
+#endif /* CFE_API_read || CFE_API_ALL */
+
+#if defined(CFE_API_readblk) || defined(CFE_API_ALL)
+int
+cfe_readblk(int handle, cfe_xint_t offset, unsigned char *buffer, int length)
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_DEV_READ;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = handle;
+ xiocb.xiocb_flags = 0;
+ xiocb.xiocb_psize = sizeof(xiocb_buffer_t);
+ xiocb.plist.xiocb_buffer.buf_offset = offset;
+ xiocb.plist.xiocb_buffer.buf_ptr = XPTR_FROM_NATIVE(buffer);
+ xiocb.plist.xiocb_buffer.buf_length = length;
+
+ cfe_iocb_dispatch(&xiocb);
+
+ if (xiocb.xiocb_status < 0)
+ return xiocb.xiocb_status;
+ return xiocb.plist.xiocb_buffer.buf_retlen;
+}
+#endif /* CFE_API_readblk || CFE_API_ALL */
+
+#if defined(CFE_API_setenv) || defined(CFE_API_ALL)
+int
+cfe_setenv(char *name, char *val)
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_ENV_SET;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = 0;
+ xiocb.xiocb_flags = 0;
+ xiocb.xiocb_psize = sizeof(xiocb_envbuf_t);
+ xiocb.plist.xiocb_envbuf.enum_idx = 0;
+ xiocb.plist.xiocb_envbuf.name_ptr = XPTR_FROM_NATIVE(name);
+ xiocb.plist.xiocb_envbuf.name_length = cfe_strlen(name);
+ xiocb.plist.xiocb_envbuf.val_ptr = XPTR_FROM_NATIVE(val);
+ xiocb.plist.xiocb_envbuf.val_length = cfe_strlen(val);
+
+ cfe_iocb_dispatch(&xiocb);
+
+ return xiocb.xiocb_status;
+}
+#endif /* CFE_API_setenv || CFE_API_ALL */
+
+#if (defined(CFE_API_strlen) || defined(CFE_API_ALL)) \
+ && !defined(CFE_API_STRLEN_CUSTOM)
+int
+cfe_strlen(char *name)
+{
+ int count = 0;
+
+ while (*name++)
+ count++;
+
+ return count;
+}
+#endif /* CFE_API_strlen || CFE_API_ALL */
+
+#if defined(CFE_API_write) || defined(CFE_API_ALL)
+int
+cfe_write(int handle, unsigned char *buffer, int length)
+{
+ return cfe_writeblk(handle, 0, buffer, length);
+}
+#endif /* CFE_API_write || CFE_API_ALL */
+
+#if defined(CFE_API_writeblk) || defined(CFE_API_ALL)
+int
+cfe_writeblk(int handle, cfe_xint_t offset, unsigned char *buffer, int length)
+{
+ cfe_xiocb_t xiocb;
+
+ xiocb.xiocb_fcode = CFE_CMD_DEV_WRITE;
+ xiocb.xiocb_status = 0;
+ xiocb.xiocb_handle = handle;
+ xiocb.xiocb_flags = 0;
+ xiocb.xiocb_psize = sizeof(xiocb_buffer_t);
+ xiocb.plist.xiocb_buffer.buf_offset = offset;
+ xiocb.plist.xiocb_buffer.buf_ptr = XPTR_FROM_NATIVE(buffer);
+ xiocb.plist.xiocb_buffer.buf_length = length;
+
+ cfe_iocb_dispatch(&xiocb);
+
+ if (xiocb.xiocb_status < 0)
+ return xiocb.xiocb_status;
+ return xiocb.plist.xiocb_buffer.buf_retlen;
+}
+#endif /* CFE_API_writeblk || CFE_API_ALL */
cfe_api.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: jmr3904dram.ld
===================================================================
--- jmr3904dram.ld (nonexistent)
+++ jmr3904dram.ld (revision 829)
@@ -0,0 +1,135 @@
+/* Linker script forJMR 3904 board */
+
+ENTRY(_start)
+STARTUP(crt0.o)
+OUTPUT_ARCH("mips:3000")
+OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-littlemips")
+GROUP(-lc -ljmr3904 -lgcc)
+SEARCH_DIR(.)
+__DYNAMIC = 0;
+
+PROVIDE (_mem_size = 0x100000); /* JMR3904 comes as standard with 512k of RAM */
+ /* but this is 1 Mb */
+
+/* PROVIDE (__global = 0); */
+
+/*
+ * Initalize some symbols to be zero so we can reference them in the
+ * crt0 without core dumping. These functions are all optional, but
+ * we do this so we can have our crt0 always use them if they exist.
+ * This is so BSPs work better when using the crt0 installed with gcc.
+ * We have to initalize them twice, so we multiple object file
+ * formats, as some prepend an underscore.
+ */
+PROVIDE (hardware_exit_hook = 0);
+PROVIDE (hardware_hazard_hook = 0);
+PROVIDE (hardware_init_hook = 0);
+PROVIDE (software_init_hook = 0);
+
+SECTIONS
+{
+ /* Load everything into DRAM, except for the stack. Put stack in SRAM */
+ . = 0x88000000;
+ /* This is NOT the address which fits with the monitor from jmr. */
+ /* It fits the Cygmon ROMS */
+ .text : {
+ _ftext = . ;
+ KEEP (*(.init))
+ eprol = .;
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ *(.mips16.fn.*)
+ *(.mips16.call.*)
+ PROVIDE (__runtime_reloc_start = .);
+ *(.rel.sdata)
+ PROVIDE (__runtime_reloc_stop = .);
+ KEEP (*(.fini))
+ etext = .;
+ _etext = .;
+ }
+ . = .;
+ .rdata : {
+ *(.rdata)
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ }
+ _fdata = ALIGN(16);
+ .data : {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ CONSTRUCTORS
+ }
+ . = ALIGN(8);
+ _gp = . + 0x8000;
+ __global = _gp;
+ .lit8 : {
+ *(.lit8)
+ }
+ .lit4 : {
+ *(.lit4)
+ }
+ .sdata : {
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ }
+ . = ALIGN(4);
+ edata = .;
+ _edata = .;
+ _fbss = .;
+ .sbss : {
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ *(.scommon)
+ }
+ .bss : {
+ _bss_start = . ;
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ }
+
+ end = .;
+ _end = .;
+
+ /* Put stack in SRAM (8 Kb); this size is the same as the stack from
+ the original script (when everything was in SRAM). */
+ __stack = 0x8000A000;
+
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to
+ the beginning of the section so we begin them at 0. */
+
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ .debug_ranges 0 : { *(.debug_ranges) }
+
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+}
Index: cfe_api.h
===================================================================
--- cfe_api.h (nonexistent)
+++ cfe_api.h (revision 829)
@@ -0,0 +1,237 @@
+/* From: CFE Id: cfe_api.h,v 1.29 2002/07/09 23:29:11 cgd Exp $ */
+
+/*
+ * Copyright 2000, 2001, 2002
+ * Broadcom Corporation. All rights reserved.
+ *
+ * This software is furnished under license and may be used and copied only
+ * in accordance with the following terms and conditions. Subject to these
+ * conditions, you may download, copy, install, use, modify and distribute
+ * modified or unmodified copies of this software in source and/or binary
+ * form. No title or ownership is transferred hereby.
+ *
+ * 1) Any source code used, modified or distributed must reproduce and
+ * retain this copyright notice and list of conditions as they appear in
+ * the source file.
+ *
+ * 2) No right is granted to use any trade name, trademark, or logo of
+ * Broadcom Corporation. The "Broadcom Corporation" name may not be
+ * used to endorse or promote products derived from this software
+ * without the prior written permission of Broadcom Corporation.
+ *
+ * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+ * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE
+ * FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE
+ * LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/* *********************************************************************
+ *
+ * Broadcom Common Firmware Environment (CFE)
+ *
+ * Device function prototypes File: cfe_api.h
+ *
+ * This file contains declarations for doing callbacks to
+ * cfe from an application. It should be the only header
+ * needed by the application to use this library
+ *
+ * Authors: Mitch Lichtenberg, Chris Demetriou
+ *
+ ********************************************************************* */
+
+#ifndef CFE_API_H
+#define CFE_API_H
+
+/*
+ * Apply customizations here for different OSes. These need to:
+ * * typedef uint64_t, int64_t, intptr_t, uintptr_t.
+ * * define cfe_strlen() if use of an existing function is desired.
+ * * define CFE_API_IMPL_NAMESPACE if API functions are to use
+ * names in the implementation namespace.
+ * Also, optionally, if the build environment does not do so automatically,
+ * CFE_API_* can be defined here as desired.
+ */
+/* Begin customization. */
+#include /* for __uint64_t and __int64_t. */
+#define int64_t __int64_t
+#define uint64_t __int64_t
+#include <_ansi.h> /* for _POINTER_INT. */
+typedef _POINTER_INT intptr_t;
+typedef unsigned _POINTER_INT uintptr_t;
+
+#include
+#define cfe_strlen(s) strlen(s)
+
+#define CFE_API_ALL
+#define CFE_API_IMPL_NAMESPACE
+
+/* Return the stack size to be used for the program. Normally 32KB. The
+ normal memory allocator uses the bottom of the stack as its heap limit,
+ so if your application uses a lot of stack space define this function
+ appropriately to keep the heap from growing into the stack. */
+unsigned long __libcfe_stack_size(void) __attribute__((__weak__));
+
+/* Return the (max address + 1) to be used by this program. (This address
+ minus '_end' is used as the heap size, so the address should be in the
+ same address space segments as _end. The normal memory allocator
+ queries CFE to determine the available memory. */
+void *__libcfe_mem_limit(void) __attribute__((__weak__));
+
+/* If the configuration ability provided by __libcfe_mem_limit() and
+ __libcfe_stack_size() do not provide enough flexibility for your
+ application's memory allocation needs, you can replace the normal
+ low-level allocator by providing the functions listed below and
+ also the function:
+
+ void *sbrk(ptrdiff_t incr);
+
+ If you provide any of these functions, you should provide all three,
+ and be sure to link them into your application as a .o file (rather
+ than a .a).
+
+ __libcfe_meminit() is responsible for initializing the low-level
+ memory allocator.
+
+ __libcfe_stack_top() returns a pointer to the top (highest address;
+ the stack grows down from that address) of the stack to be used by
+ the program. */
+void __libcfe_meminit (void);
+void *__libcfe_stack_top (void);
+
+/* End customization. */
+
+
+/* *********************************************************************
+ * Constants
+ ********************************************************************* */
+
+/* Seal indicating CFE's presence, passed to user program. */
+#define CFE_EPTSEAL 0x43464531
+
+#define CFE_MI_RESERVED 0 /* memory is reserved, do not use */
+#define CFE_MI_AVAILABLE 1 /* memory is available */
+
+#define CFE_FLG_WARMSTART 0x00000001
+#define CFE_FLG_FULL_ARENA 0x00000001
+#define CFE_FLG_ENV_PERMANENT 0x00000001
+
+#define CFE_CPU_CMD_START 1
+#define CFE_CPU_CMD_STOP 0
+
+#define CFE_STDHANDLE_CONSOLE 0
+
+#define CFE_DEV_NETWORK 1
+#define CFE_DEV_DISK 2
+#define CFE_DEV_FLASH 3
+#define CFE_DEV_SERIAL 4
+#define CFE_DEV_CPU 5
+#define CFE_DEV_NVRAM 6
+#define CFE_DEV_CLOCK 7
+#define CFE_DEV_OTHER 8
+#define CFE_DEV_MASK 0x0F
+
+#define CFE_CACHE_FLUSH_D 1
+#define CFE_CACHE_INVAL_I 2
+#define CFE_CACHE_INVAL_D 4
+#define CFE_CACHE_INVAL_L2 8
+
+#define CFE_FWI_64BIT 0x00000001
+#define CFE_FWI_32BIT 0x00000002
+#define CFE_FWI_RELOC 0x00000004
+#define CFE_FWI_UNCACHED 0x00000008
+#define CFE_FWI_MULTICPU 0x00000010
+#define CFE_FWI_FUNCSIM 0x00000020
+#define CFE_FWI_RTLSIM 0x00000040
+
+typedef struct {
+ int64_t fwi_version; /* major, minor, eco version */
+ int64_t fwi_totalmem; /* total installed mem */
+ int64_t fwi_flags; /* various flags */
+ int64_t fwi_boardid; /* board ID */
+ int64_t fwi_bootarea_va; /* VA of boot area */
+ int64_t fwi_bootarea_pa; /* PA of boot area */
+ int64_t fwi_bootarea_size; /* size of boot area */
+} cfe_fwinfo_t;
+
+
+/*
+ * cfe_strlen is handled specially: If already defined, it has been
+ * overridden in this environment with a standard strlen-like function.
+ */
+#ifdef cfe_strlen
+# define CFE_API_STRLEN_CUSTOM
+#else
+# ifdef CFE_API_IMPL_NAMESPACE
+# define cfe_strlen(a) __cfe_strlen(a)
+# endif
+int cfe_strlen(char *name);
+#endif
+
+/*
+ * Defines and prototypes for functions which take no arguments.
+ */
+#ifdef CFE_API_IMPL_NAMESPACE
+int64_t __cfe_getticks(void);
+#define cfe_getticks() __cfe_getticks()
+#else
+int64_t cfe_getticks(void);
+#endif
+
+/*
+ * Defines and prototypes for the rest of the functions.
+ */
+#ifdef CFE_API_IMPL_NAMESPACE
+#define cfe_close(a) __cfe_close(a)
+#define cfe_cpu_start(a,b,c,d,e) __cfe_cpu_start(a,b,c,d,e)
+#define cfe_cpu_stop(a) __cfe_cpu_stop(a)
+#define cfe_enumenv(a,b,d,e,f) __cfe_enumenv(a,b,d,e,f)
+#define cfe_enummem(a,b,c,d,e) __cfe_enummem(a,b,c,d,e)
+#define cfe_exit(a,b) __cfe_exit(a,b)
+#define cfe_flushcache(a) __cfe_cacheflush(a)
+#define cfe_getdevinfo(a) __cfe_getdevinfo(a)
+#define cfe_getenv(a,b,c) __cfe_getenv(a,b,c)
+#define cfe_getfwinfo(a) __cfe_getfwinfo(a)
+#define cfe_getstdhandle(a) __cfe_getstdhandle(a)
+#define cfe_init(a,b) __cfe_init(a,b)
+#define cfe_inpstat(a) __cfe_inpstat(a)
+#define cfe_ioctl(a,b,c,d,e,f) __cfe_ioctl(a,b,c,d,e,f)
+#define cfe_open(a) __cfe_open(a)
+#define cfe_read(a,b,c) __cfe_read(a,b,c)
+#define cfe_readblk(a,b,c,d) __cfe_readblk(a,b,c,d)
+#define cfe_setenv(a,b) __cfe_setenv(a,b)
+#define cfe_write(a,b,c) __cfe_write(a,b,c)
+#define cfe_writeblk(a,b,c,d) __cfe_writeblk(a,b,c,d)
+#endif /* CFE_API_IMPL_NAMESPACE */
+
+int cfe_close(int handle);
+int cfe_cpu_start(int cpu, void (*fn)(void), long sp, long gp, long a1);
+int cfe_cpu_stop(int cpu);
+int cfe_enumenv(int idx, char *name, int namelen, char *val, int vallen);
+int cfe_enummem(int idx, int flags, uint64_t *start, uint64_t *length,
+ uint64_t *type);
+int cfe_exit(int warm,int status);
+int cfe_flushcache(int flg);
+int cfe_getdevinfo(char *name);
+int cfe_getenv(char *name, char *dest, int destlen);
+int cfe_getfwinfo(cfe_fwinfo_t *info);
+int cfe_getstdhandle(int flg);
+int cfe_init(uint64_t handle,uint64_t ept);
+int cfe_inpstat(int handle);
+int cfe_ioctl(int handle, unsigned int ioctlnum, unsigned char *buffer,
+ int length, int *retlen, uint64_t offset);
+int cfe_open(char *name);
+int cfe_read(int handle, unsigned char *buffer, int length);
+int cfe_readblk(int handle, int64_t offset, unsigned char *buffer, int length);
+int cfe_setenv(char *name, char *val);
+int cfe_write(int handle, unsigned char *buffer, int length);
+int cfe_writeblk(int handle, int64_t offset, unsigned char *buffer,
+ int length);
+
+#endif /* CFE_API_H */
cfe_api.h
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: cygmon.c
===================================================================
--- cygmon.c (nonexistent)
+++ cygmon.c (revision 829)
@@ -0,0 +1,87 @@
+/* cygmon.c -- Glue code for linking apps to run on top of Cygmon.
+ *
+ * Copyright (c) 1998, 1999, 2000 Red Hat, 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.
+ */
+
+#include "syscall.h"
+
+int
+write ( int file,
+ char *buf,
+ int nbytes)
+{
+ return sysCall(SYS_write, file, (unsigned long)buf, nbytes);
+}
+
+int
+read (int file,
+ char *buf,
+ int nbytes)
+{
+ return sysCall(SYS_read, file, (unsigned long)buf, nbytes);
+}
+
+int
+outbyte (unsigned char c)
+{
+ return sysCall(SYS_write, 0, (unsigned long)&c, 1);
+}
+
+unsigned char
+inbyte (void)
+{
+ char c;
+ sysCall(SYS_read, 0, (unsigned long)&c, 1);
+ return c;
+}
+
+
+/* Structure filled in by get_mem_info. Only the size field is
+ actually used (by sbrk), so the others aren't even filled in. */
+struct s_mem
+{
+ unsigned int size;
+ unsigned int icsize;
+ unsigned int dcsize;
+};
+
+// Perform a system call.
+// Unused parameters should be set to 0.
+int sysCall(unsigned long func, unsigned long p1, unsigned long p2, unsigned long p3)
+{
+ int ret = 0;
+ asm volatile ( " \n\
+ move $4, %1 \n\
+ move $5, %2 \n\
+ move $6, %3 \n\
+ move $7, %4 \n\
+ syscall \n\
+ nop \n\
+ move %0, $2" : "=r"(ret) : "r"(func), "r"(p1), "r"(p2), "r"(p3));
+ return ret;
+}
+
+// These need to be kept in sync with the definitions in Cygmon.
+#define SYS_meminfo 1001
+
+void *
+get_mem_info (mem)
+ struct s_mem *mem;
+{
+ unsigned long totmem = 0, topmem = 0;
+ int numbanks;
+
+ numbanks = sysCall(SYS_meminfo, (unsigned long)&totmem, (unsigned long)&topmem, 0);
+ mem->size = totmem;
+ return (void*)topmem;
+}
cygmon.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: aclocal.m4
===================================================================
--- aclocal.m4 (nonexistent)
+++ aclocal.m4 (revision 829)
@@ -0,0 +1,344 @@
+# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 7
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 3
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+m4_include([../acinclude.m4])
Index: cfe.c
===================================================================
--- cfe.c (nonexistent)
+++ cfe.c (revision 829)
@@ -0,0 +1,107 @@
+/* cfe.c -- I/O code for the MIPS boards running CFE. */
+
+/*
+ * Copyright 2001, 2002, 2003
+ * Broadcom Corporation. All rights reserved.
+ *
+ * This software is furnished under license and may be used and copied only
+ * in accordance with the following terms and conditions. Subject to these
+ * conditions, you may download, copy, install, use, modify and distribute
+ * modified or unmodified copies of this software in source and/or binary
+ * form. No title or ownership is transferred hereby.
+ *
+ * 1) Any source code used, modified or distributed must reproduce and
+ * retain this copyright notice and list of conditions as they appear in
+ * the source file.
+ *
+ * 2) No right is granted to use any trade name, trademark, or logo of
+ * Broadcom Corporation. The "Broadcom Corporation" name may not be
+ * used to endorse or promote products derived from this software
+ * without the prior written permission of Broadcom Corporation.
+ *
+ * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+ * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE
+ * FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE
+ * LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ */
+
+#include "cfe_api.h"
+
+void *__libcfe_init (long handle, long a1, long cfe_entrypoint, long a3);
+void __libcfe_exit (long status);
+
+char inbyte (void);
+int outbyte (char c);
+
+/* Echo input characters? */
+int __libcfe_echo_input = 0;
+
+/* CFE handle used to access console device. */
+static int cfe_conshandle;
+
+
+/* Initialize firmware callbacks. Called from crt0_cfe. Returns desired
+ stack pointer. */
+void *
+__libcfe_init (long handle, long a1, long entrypoint, long a3)
+{
+ cfe_init (handle, entrypoint);
+ cfe_conshandle = cfe_getstdhandle (CFE_STDHANDLE_CONSOLE);
+
+ __libcfe_meminit ();
+ return __libcfe_stack_top ();
+}
+
+/* Exit back to monitor, with the given status code. */
+void
+__libcfe_exit (long status)
+{
+ outbyte ('\r');
+ outbyte ('\n');
+ cfe_exit (CFE_FLG_WARMSTART, status);
+}
+
+char
+inbyte (void)
+{
+ unsigned char c;
+ int rv;
+
+ while (cfe_read (cfe_conshandle, &c, 1) != 1)
+ ;
+ if (c == '\r')
+ c = '\n';
+ if (__libcfe_echo_input)
+ outbyte (c);
+ return c;
+}
+
+int
+outbyte (char c)
+{
+ int res;
+
+ do
+ {
+ res = cfe_write (cfe_conshandle, &c, 1);
+ }
+ while (res == 0);
+ if (c == '\n')
+ outbyte ('\r');
+ return 0;
+}
+
+/* This is the MIPS cache flush function call. No defines are provided
+ by libgloss for 'cache', and CFE doesn't let you flush ranges, so
+ we just flush all I & D for every call. */
+int
+_flush_cache (char *addr, int nbytes, int cache)
+{
+ cfe_flushcache (0);
+ return 0;
+}
cfe.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property