mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-02 05:05:09 +00:00
Put each assembly helper function in its own .text.__funcname__ section, so the linker can remove the unused ones. Also remove a few entrypoints used only by deprecated ABIs. Signed-off-by: Vincent Palatin <vpalatin@chromium.org> BRANCH=samus BUG=none TEST=make buildall check the firmware size and see we are saving 88 bytes on Zinger. Change-Id: I6714da671c3449220652780d47993d6c919c331c Reviewed-on: https://chromium-review.googlesource.com/240582 Reviewed-by: Alec Berg <alecaberg@chromium.org> Trybot-Ready: Vincent Palatin <vpalatin@chromium.org> Tested-by: Vincent Palatin <vpalatin@chromium.org> Commit-Queue: Vincent Palatin <vpalatin@chromium.org>
82 lines
1.6 KiB
ArmAsm
82 lines
1.6 KiB
ArmAsm
/* Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*
|
|
* Thumb mode toolchain helpers for compact switch/case statement.
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
.text
|
|
|
|
.syntax unified
|
|
.code 16
|
|
|
|
/*
|
|
* Helpers for compact switch
|
|
*
|
|
* r0: the table index
|
|
* lr: the table base address (need to clear bit 0)
|
|
*
|
|
* r0 and lr must be PRESERVED.
|
|
* r12 can be clobbered.
|
|
*/
|
|
.section .text.__gnu_thumb1_case_uqi
|
|
.global __gnu_thumb1_case_uqi
|
|
.thumb_func
|
|
__gnu_thumb1_case_uqi:
|
|
mov r12, r1
|
|
mov r1, lr
|
|
lsrs r1, r1, #1
|
|
lsls r1, r1, #1
|
|
ldrb r1, [r1, r0]
|
|
lsls r1, r1, #1
|
|
add lr, lr, r1
|
|
mov r1, r12
|
|
bx lr
|
|
|
|
.section .text.__gnu_thumb1_case_sqi
|
|
.global __gnu_thumb1_case_sqi
|
|
.thumb_func
|
|
__gnu_thumb1_case_sqi:
|
|
mov r12, r1
|
|
mov r1, lr
|
|
lsrs r1, r1, #1
|
|
lsls r1, r1, #1
|
|
ldrsb r1, [r1, r0]
|
|
lsls r1, r1, #1
|
|
add lr, lr, r1
|
|
mov r1, r12
|
|
bx lr
|
|
|
|
.section .text.__gnu_thumb1_case_uhi
|
|
.global __gnu_thumb1_case_uhi
|
|
.thumb_func
|
|
__gnu_thumb1_case_uhi:
|
|
push {r0, r1}
|
|
mov r1, lr
|
|
lsrs r1, r1, #1
|
|
lsls r0, r0, #1
|
|
lsls r1, r1, #1
|
|
ldrh r1, [r1, r0]
|
|
lsls r1, r1, #1
|
|
add lr, lr, r1
|
|
pop {r0, r1}
|
|
bx lr
|
|
|
|
|
|
.section .text.__gnu_thumb1_case_shi
|
|
.global __gnu_thumb1_case_shi
|
|
.thumb_func
|
|
__gnu_thumb1_case_shi:
|
|
push {r0, r1}
|
|
mov r1, lr
|
|
lsrs r1, r1, #1
|
|
lsls r0, r0, #1
|
|
lsls r1, r1, #1
|
|
ldrsh r1, [r1, r0]
|
|
lsls r1, r1, #1
|
|
add lr, lr, r1
|
|
pop {r0, r1}
|
|
bx lr
|