1 /* 2 * Copyright (c) 2009-2022 Huawei Technologies Co., Ltd. All rights reserved. 3 * 4 * UniProton is licensed under Mulan PSL v2. 5 * You can use this software according to the terms and conditions of the Mulan PSL v2. 6 * You may obtain a copy of Mulan PSL v2 at: 7 * http://license.coscl.org.cn/MulanPSL2 8 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 9 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 10 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 11 * See the Mulan PSL v2 for more details. 12 * Create: 2009-12-26 13 * Description: ARM汇编宏, 如initRnd等。 14 */ 15 #ifndef PRT_ASM_ARM_EXTERNAL_H 16 #define PRT_ASM_ARM_EXTERNAL_H 17 18 #if defined(OS_ARCH_ARMV8) 19 #include "../cpu/armv8/common/os_asm_cpu_armv8_external.h" 20 #endif 21 22 /* 23 * 描述 : stack_chk_guard支持用户传入seed写入函数宏 24 * argA argB argC 需要使用处传入三个可用寄存器 25 */ 26 .macro InitChkGuardRnd argA, argB, argC 27 ldr \argA, = g_memCanaryRdm /* 用户传入seed */ 28 ldr \argB, = __stack_chk_guard 29 ldr \argC, [\argA] 30 cmp \argC, #0 31 beq 1f 32 str \argC, [\argB] /* RND写入 */ 33 mov \argC, #0 34 str \argC, [\argA] /* 销毁 */ 35 1: 36 .endm 37 38 #endif /* PRT_ASM_ARM_EXTERNAL_H */ 39