GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)
This commit is contained in:
+48
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (c) 2015-2019, Renesas Electronics Corporation. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include <arch.h>
|
||||
#include <asm_macros.S>
|
||||
|
||||
.global rcar_pwrc_switch_stack
|
||||
|
||||
/*
|
||||
* x0 : jump address,
|
||||
* x1 : stack address,
|
||||
* x2 : arg,
|
||||
* x3 : stack address (temporary)
|
||||
*/
|
||||
func rcar_pwrc_switch_stack
|
||||
|
||||
/* lr to stack */
|
||||
stp x29, x30, [sp,#-16]
|
||||
|
||||
/* change stack pointer */
|
||||
mov x3, sp
|
||||
mov sp, x1
|
||||
|
||||
/* save stack pointer */
|
||||
sub sp, sp, #16
|
||||
stp x0, x3, [sp]
|
||||
|
||||
/* data synchronization barrier */
|
||||
dsb sy
|
||||
|
||||
/* jump to code */
|
||||
mov x1, x0
|
||||
mov x0, x2
|
||||
blr x1
|
||||
|
||||
/* load stack pointer */
|
||||
ldp x0, x2, [sp,#0]
|
||||
|
||||
/* change stack pointer */
|
||||
mov sp, x2
|
||||
|
||||
/* return */
|
||||
ldp x29, x30, [sp,#-16]
|
||||
ret
|
||||
endfunc rcar_pwrc_switch_stack
|
||||
Reference in New Issue
Block a user