0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include <linux/linkage.h>
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 .arch armv7-a
0024 .arch_extension sec
0025 ENTRY(_omap_smc1)
0026 stmfd sp!, {r2-r12, lr}
0027 mov r12, r0
0028 mov r0, r1
0029 dsb
0030 smc #0
0031 ldmfd sp!, {r2-r12, pc}
0032 ENDPROC(_omap_smc1)
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042 ENTRY(omap_smc2)
0043 stmfd sp!, {r4-r12, lr}
0044 mov r3, r2
0045 mov r2, r1
0046 mov r1, #0x0 @ Process ID
0047 mov r6, #0xff
0048 mov r12, #0x00 @ Secure Service ID
0049 mov r7, #0
0050 mcr p15, 0, r7, c7, c5, 6
0051 dsb
0052 dmb
0053 smc #0
0054 ldmfd sp!, {r4-r12, pc}
0055 ENDPROC(omap_smc2)
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065 ENTRY(omap_smc3)
0066 stmfd sp!, {r4-r11, lr}
0067 mov r12, r0 @ Copy the secure service ID
0068 mov r6, #0xff @ Indicate new Task call
0069 dsb @ Memory Barrier (not sure if needed, copied from omap_smc2)
0070 smc #1 @ Call PPA service
0071 ldmfd sp!, {r4-r11, pc}
0072 ENDPROC(omap_smc3)
0073
0074 ENTRY(omap_modify_auxcoreboot0)
0075 stmfd sp!, {r1-r12, lr}
0076 ldr r12, =0x104
0077 dsb
0078 smc #0
0079 ldmfd sp!, {r1-r12, pc}
0080 ENDPROC(omap_modify_auxcoreboot0)
0081
0082 ENTRY(omap_auxcoreboot_addr)
0083 stmfd sp!, {r2-r12, lr}
0084 ldr r12, =0x105
0085 dsb
0086 smc #0
0087 ldmfd sp!, {r2-r12, pc}
0088 ENDPROC(omap_auxcoreboot_addr)
0089
0090 ENTRY(omap_read_auxcoreboot0)
0091 stmfd sp!, {r2-r12, lr}
0092 ldr r12, =0x103
0093 dsb
0094 smc #0
0095 ldmfd sp!, {r2-r12, pc}
0096 ENDPROC(omap_read_auxcoreboot0)