2022-01-02 02:13:18 +08:00
|
|
|
dnl Copyright (C) 1997-2022 Free Software Foundation, Inc.
|
2021-02-07 11:51:30 +08:00
|
|
|
dnl
|
|
|
|
dnl This program is free software; you can redistribute it and/or modify
|
|
|
|
dnl it under the terms of the GNU General Public License as published by
|
|
|
|
dnl the Free Software Foundation; either version 3 of the License, or
|
|
|
|
dnl (at your option) any later version.
|
|
|
|
dnl
|
|
|
|
dnl This program is distributed in the hope that it will be useful,
|
|
|
|
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
dnl GNU General Public License for more details.
|
|
|
|
dnl
|
|
|
|
dnl You should have received a copy of the GNU General Public License
|
|
|
|
dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
dnl
|
|
|
|
dnl --enable-sim-bitsize is for developers of the simulator
|
|
|
|
dnl It specifies the number of BITS in the target.
|
|
|
|
dnl arg[1] is the number of bits in a word
|
|
|
|
dnl arg[2] is the number assigned to the most significant bit
|
|
|
|
dnl arg[3] is the number of bits in an address
|
|
|
|
dnl arg[4] is the number of bits in an OpenFirmware cell.
|
|
|
|
dnl FIXME: this information should be obtained from bfd/archure
|
|
|
|
AC_DEFUN([SIM_AC_OPTION_BITSIZE],
|
|
|
|
wire_word_bitsize="[$1]"
|
|
|
|
wire_word_msb="[$2]"
|
|
|
|
wire_address_bitsize="[$3]"
|
|
|
|
wire_cell_bitsize="[$4]"
|
|
|
|
[AC_ARG_ENABLE(sim-bitsize,
|
|
|
|
[AS_HELP_STRING([--enable-sim-bitsize=N], [Specify target bitsize (32 or 64)])],
|
|
|
|
[sim_bitsize=
|
|
|
|
case "${enableval}" in
|
|
|
|
64,63 | 64,63,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63";;
|
|
|
|
32,31 | 32,31,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31";;
|
|
|
|
64,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
|
|
|
|
32,0 | 64,0,* ) sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0";;
|
|
|
|
32) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
|
|
|
|
sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=31"
|
|
|
|
else
|
|
|
|
sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=32 -DWITH_TARGET_WORD_MSB=0"
|
|
|
|
fi ;;
|
|
|
|
64) if test x"$wire_word_msb" != x -a x"$wire_word_msb" != x0; then
|
|
|
|
sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=63"
|
|
|
|
else
|
|
|
|
sim_bitsize="-DWITH_TARGET_WORD_BITSIZE=64 -DWITH_TARGET_WORD_MSB=0"
|
|
|
|
fi ;;
|
|
|
|
*) AC_MSG_ERROR("--enable-sim-bitsize was given $enableval. Expected 32 or 64") ;;
|
|
|
|
esac
|
|
|
|
# address bitsize
|
|
|
|
tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9]]*,*//"`
|
|
|
|
case x"${tmp}" in
|
|
|
|
x ) ;;
|
|
|
|
x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=32" ;;
|
|
|
|
x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_ADDRESS_BITSIZE=64" ;;
|
|
|
|
* ) AC_MSG_ERROR("--enable-sim-bitsize was given address size $enableval. Expected 32 or 64") ;;
|
|
|
|
esac
|
|
|
|
# cell bitsize
|
|
|
|
tmp=`echo "${enableval}" | sed -e "s/^[[0-9]]*,*[[0-9*]]*,*[[0-9]]*,*//"`
|
|
|
|
case x"${tmp}" in
|
|
|
|
x ) ;;
|
|
|
|
x32 | x32,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=32" ;;
|
|
|
|
x64 | x64,* ) sim_bitsize="${sim_bitsize} -DWITH_TARGET_CELL_BITSIZE=64" ;;
|
|
|
|
* ) AC_MSG_ERROR("--enable-sim-bitsize was given cell size $enableval. Expected 32 or 64") ;;
|
|
|
|
esac
|
|
|
|
if test x"$silent" != x"yes" && test x"$sim_bitsize" != x""; then
|
|
|
|
echo "Setting bitsize flags = $sim_bitsize" 6>&1
|
|
|
|
fi],
|
|
|
|
[sim_bitsize=""
|
|
|
|
if test x"$wire_word_bitsize" != x; then
|
|
|
|
sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_BITSIZE=$wire_word_bitsize"
|
|
|
|
fi
|
|
|
|
if test x"$wire_word_msb" != x; then
|
|
|
|
sim_bitsize="$sim_bitsize -DWITH_TARGET_WORD_MSB=$wire_word_msb"
|
|
|
|
fi
|
|
|
|
if test x"$wire_address_bitsize" != x; then
|
|
|
|
sim_bitsize="$sim_bitsize -DWITH_TARGET_ADDRESS_BITSIZE=$wire_address_bitsize"
|
|
|
|
fi
|
|
|
|
if test x"$wire_cell_bitsize" != x; then
|
|
|
|
sim_bitsize="$sim_bitsize -DWITH_TARGET_CELL_BITSIZE=$wire_cell_bitsize"
|
|
|
|
fi])dnl
|
|
|
|
])
|
|
|
|
AC_SUBST(sim_bitsize)
|