blob: cd2543435b5dd3425af9f105be56e2ebe0b19db9 [file] [log] [blame]
#include <linux/errno.h>
#include <linux/linkage.h>
#include <asm/asm-offsets.h>
#include <asm/assembler.h>
#ifdef CONFIG_ARM
#include <asm/opcodes-sec.h>
#endif
/*
* int smc_get_fuse_info(u64 function_id, void *arg)
*/
#ifdef CONFIG_ARM64
ENTRY(smc_get_fuse_info)
sub sp, sp, #16
str x19, [sp]
mov x19, x1
smc #0
str w1, [x19], #4
str w2, [x19], #4
str w3, [x19], #4
str w4, [x19], #4
str w5, [x19], #4
str w6, [x19], #4
str w7, [x19], #4
ldr x19, [sp]
add sp, sp, #16
ret
ENDPROC(smc_get_fuse_info)
#else
ENTRY(smc_get_fuse_info)
stmfd sp!, {r4, r5, r6, r7, r8}
mov r8, r1
__SMC(0)
str r1, [r8], #4
str r2, [r8], #4
str r3, [r8], #4
str r4, [r8], #4
str r5, [r8], #4
str r6, [r8], #4
str r7, [r8], #4
ldmfd sp!, {r4, r5, r6, r7, r8}
mov pc, lr
ENDPROC(smc_get_fuse_info)
#endif