arm: Move depthcharge (and vboot) to Thumb

This patch aligns depthcharge and vboot to the new Thumb-only approach
we are running throughout the firmware. Due to the way depthcharge
Makefiles work, it's hard to add the extra -Wa flags required to get
assembly files to work correctly. Thankfully, we currently have only
three raw assembly files in here... two of which are duplicated from
libpayload which isn't really that great anyway.

The reason those files were duplicated was to link them into the
trampoline while keeping the risk to accidentally pull in a load of
dependencies low. This patch implements an alternative approach for that
which avoids the source duplication but still keeps a tight whitelist of
trampoline-approved symbols. In addition, it removes the old trampoline
libgcc code which is not needed (since we don't divide in there on
either ARM or x86), and changes the trampoline handoff implementation a
bit to generate a more efficient far call on ARM.

The left over raw assembly file is the only piece of code that we
actually want to execute in ARM mode (the final jump to Linux), so this
all works out nicely in the end.

CQ-DEPEND=CL:182212
BUG=None
TEST=Snow and Nyan still boot, RW switch still works.

Change-Id: Iece8fad69e78b52f2c631c39ff0ed47b14e23790
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/182181
16 files changed