8b9c550e37
Move the code that implements the "smc" call into a C function that uses inline assembly. This allows us to make that function private, and enables us to get rid of "arch/arm/mach-bcm/bcm_kona_smc_asm.S". Rename what had been the "buffer_addr" argument to be "buffer_phys" so it's consistent with other usage in this file. Since it's now easy to do, verify that r12 contains SEC_EXIT_NORMAL upon completion of the SMC. There really isn't a good way to handle the abnormal completion of a secure monitor request. Since "bcm_kona_smc.h" is now only included from C files, eliminate the #ifndef __ASSEMBLY__. Signed-off-by: Alex Elder <elder@linaro.org> Reviewed-by: Tim Kryger <tim.kryger@linaro.org> Reviewed-by: Markus Mayer <markus.mayer@linaro.org> Reviewed-by: Matt Porter <mporter@linaro.org> Signed-off-by: Matt Porter <mporter@linaro.org>
33 lines
972 B
C
33 lines
972 B
C
/*
|
|
* Copyright (C) 2013 Broadcom Corporation
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation version 2.
|
|
*
|
|
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
|
|
* kind, whether express or implied; without even the implied warranty
|
|
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
#ifndef BCM_KONA_SMC_H
|
|
#define BCM_KONA_SMC_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
/* Broadcom Secure Service API service IDs, return codes, and exit codes */
|
|
#define SSAPI_ENABLE_L2_CACHE 0x01000002
|
|
#define SEC_ROM_RET_OK 0x00000001
|
|
#define SEC_EXIT_NORMAL 0x1
|
|
|
|
extern int __init bcm_kona_smc_init(void);
|
|
|
|
extern unsigned bcm_kona_smc(unsigned service_id,
|
|
unsigned arg0,
|
|
unsigned arg1,
|
|
unsigned arg2,
|
|
unsigned arg3);
|
|
|
|
#endif /* BCM_KONA_SMC_H */
|