diff options
author | danh-arm <dan.handley@arm.com> | 2015-04-01 11:36:08 +0100 |
---|---|---|
committer | danh-arm <dan.handley@arm.com> | 2015-04-01 11:36:08 +0100 |
commit | 874cd37f0bd78e7fc9c6b452f9b5331e89d0284e (patch) | |
tree | b637ec9a0b04e3405b0dbdc6e470776bdb55c013 /include | |
parent | 7e2d659e130e91142a4e32a0884265fb551291b6 (diff) | |
parent | 0a34d1e6df4904a42a4b441530b4fd89735245e3 (diff) |
Merge pull request #280 from vwadekar/tlkd-fixed-v3
TLK dispatcher
Diffstat (limited to 'include')
-rw-r--r-- | include/bl32/payloads/tlk.h | 82 | ||||
-rw-r--r-- | include/lib/aarch64/arch_helpers.h | 9 |
2 files changed, 91 insertions, 0 deletions
diff --git a/include/bl32/payloads/tlk.h b/include/bl32/payloads/tlk.h new file mode 100644 index 00000000..910f50fd --- /dev/null +++ b/include/bl32/payloads/tlk.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of ARM nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __TLK_H__ +#define __TLK_H__ + +/* + * Generate function IDs for the Trusted OS/Apps + */ +#define TLK_TOS_STD_FID(fid) ((fid) | 0x72000000 | (0 << 31)) +#define TLK_TA_STD_FID(fid) ((fid) | 0x70000000 | (0 << 31)) + +/* + * Trusted OS specific function IDs + */ +#define TLK_REGISTER_LOGBUF TLK_TOS_STD_FID(0x1) +#define TLK_REGISTER_REQBUF TLK_TOS_STD_FID(0x2) +#define TLK_RESUME_FID TLK_TOS_STD_FID(0x100) + +/* + * SMC function IDs that TLK uses to signal various forms of completions + * to the secure payload dispatcher. + */ +#define TLK_REQUEST_DONE (0x32000001 | (1 << 31)) +#define TLK_PREEMPTED (0x32000002 | (1 << 31)) +#define TLK_ENTRY_DONE (0x32000003 | (1 << 31)) +#define TLK_VA_TRANSLATE (0x32000004 | (1 << 31)) +#define TLK_FID_SHARED_MEMBUF (0x32000005 | (1 << 31)) + +/* + * Trusted Application specific function IDs + */ +#define TLK_OPEN_TA_SESSION TLK_TA_STD_FID(0x1) +#define TLK_CLOSE_TA_SESSION TLK_TA_STD_FID(0x2) +#define TLK_TA_LAUNCH_OP TLK_TA_STD_FID(0x3) +#define TLK_TA_SEND_EVENT TLK_TA_STD_FID(0x4) + +/* + * Total number of function IDs implemented for services offered to NS clients. + */ +#define TLK_NUM_FID 7 + +/* TLK implementation version numbers */ +#define TLK_VERSION_MAJOR 0x0 /* Major version */ +#define TLK_VERSION_MINOR 0x1 /* Minor version */ + +/* + * Standard Trusted OS Function IDs that fall under Trusted OS call range + * according to SMC calling convention + */ +#define TOS_CALL_COUNT 0xbf00ff00 /* Number of calls implemented */ +#define TOS_UID 0xbf00ff01 /* Implementation UID */ +#define TOS_CALL_VERSION 0xbf00ff03 /* Trusted OS Call Version */ + +#endif /* __TLK_H__ */ diff --git a/include/lib/aarch64/arch_helpers.h b/include/lib/aarch64/arch_helpers.h index 65941e6c..ceb88e47 100644 --- a/include/lib/aarch64/arch_helpers.h +++ b/include/lib/aarch64/arch_helpers.h @@ -136,6 +136,14 @@ DEFINE_SYSOP_TYPE_PARAM_FUNC(dc, civac) DEFINE_SYSOP_TYPE_PARAM_FUNC(dc, cvau) DEFINE_SYSOP_TYPE_PARAM_FUNC(dc, zva) +/******************************************************************************* + * Address translation accessor prototypes + ******************************************************************************/ +DEFINE_SYSOP_TYPE_PARAM_FUNC(at, s12e1r) +DEFINE_SYSOP_TYPE_PARAM_FUNC(at, s12e1w) +DEFINE_SYSOP_TYPE_PARAM_FUNC(at, s12e0r) +DEFINE_SYSOP_TYPE_PARAM_FUNC(at, s12e0w) + void flush_dcache_range(uint64_t, uint64_t); void inv_dcache_range(uint64_t, uint64_t); void dcsw_op_louis(uint32_t); @@ -160,6 +168,7 @@ DEFINE_SYSREG_WRITE_CONST_FUNC(daifclr) #define disable_serror() write_daifset(DAIF_ABT_BIT) #define disable_debug_exceptions() write_daifset(DAIF_DBG_BIT) +DEFINE_SYSREG_READ_FUNC(par_el1) DEFINE_SYSREG_READ_FUNC(id_pfr1_el1) DEFINE_SYSREG_READ_FUNC(id_aa64pfr0_el1) DEFINE_SYSREG_READ_FUNC(CurrentEl) |