Debug: Implement getArgument() and function skipping for ARM.
authorAli Saidi <Ali.Saidi@ARM.com>
Fri, 1 Oct 2010 21:02:46 +0000 (16:02 -0500)
committerAli Saidi <Ali.Saidi@ARM.com>
Fri, 1 Oct 2010 21:02:46 +0000 (16:02 -0500)
commit518b5e5b1c71259ce0badc29f98db46a73c59442
tree40260de5559f292aac501ca99f2b1f0b72098cb8
parentb331b02669f95adf4744b1e7db50ad4b231fb704
Debug: Implement getArgument() and function skipping for ARM.

In the process make add skipFuction() to handle isa specific function skipping
instead of ifdefs and other ugliness. For almost all ABIs, 64 bit arguments can
only start in even registers.  Size is now passed to getArgument() so that 32
bit systems can make decisions about register selection for 64 bit arguments.
The number argument is now passed by reference because getArgument() will need
to change it based on the size of the argument and the current argument number.

For ARM, if the argument number is odd and a 64-bit register is requested the
number must first be incremented to because all 64 bit arguments are passed
in an even argument register. Then the number will be incremented again to
access both halves of the argument.
16 files changed:
src/arch/alpha/utility.cc
src/arch/alpha/utility.hh
src/arch/arm/system.hh
src/arch/arm/utility.cc
src/arch/arm/utility.hh
src/arch/mips/utility.cc
src/arch/mips/utility.hh
src/arch/power/utility.cc
src/arch/power/utility.hh
src/arch/sparc/utility.cc
src/arch/sparc/utility.hh
src/arch/x86/utility.cc
src/arch/x86/utility.hh
src/kern/system_events.cc
src/sim/arguments.cc
src/sim/arguments.hh