| /* |
| * OMAP44xx secure APIs file. |
| * |
| * Copyright (C) 2010 Texas Instruments, Inc. |
| * Written by Santosh Shilimkar <santosh.shilimkar@ti.com> |
| * |
| * |
| * This program is free software,you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| */ |
| |
| #include <linux/linkage.h> |
| |
| /* |
| * This is common routine to manage secure monitor API |
| * used to modify the PL310 secure registers. |
| * 'r0' contains the value to be modified and 'r12' contains |
| * the monitor API number. It uses few CPU registers |
| * internally and hence they need be backed up including |
| * link register "lr". |
| * Function signature : void omap_smc1(u32 fn, u32 arg) |
| */ |
| |
| ENTRY(omap_smc1) |
| stmfd sp!, {r2-r12, lr} |
| mov r12, r0 |
| mov r0, r1 |
| dsb |
| smc #0 |
| ldmfd sp!, {r2-r12, pc} |
| END(omap_smc1) |
| |
| ENTRY(omap_modify_auxcoreboot0) |
| stmfd sp!, {r1-r12, lr} |
| ldr r12, =0x104 |
| dsb |
| smc #0 |
| ldmfd sp!, {r1-r12, pc} |
| END(omap_modify_auxcoreboot0) |
| |
| ENTRY(omap_auxcoreboot_addr) |
| stmfd sp!, {r2-r12, lr} |
| ldr r12, =0x105 |
| dsb |
| smc #0 |
| ldmfd sp!, {r2-r12, pc} |
| END(omap_auxcoreboot_addr) |
| |
| ENTRY(omap_read_auxcoreboot0) |
| stmfd sp!, {r2-r12, lr} |
| ldr r12, =0x103 |
| dsb |
| smc #0 |
| mov r0, r0, lsr #9 |
| ldmfd sp!, {r2-r12, pc} |
| END(omap_read_auxcoreboot0) |