summaryrefslogtreecommitdiff
path: root/fwu/ns_bl1u/ns_bl1u_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'fwu/ns_bl1u/ns_bl1u_main.c')
-rw-r--r--fwu/ns_bl1u/ns_bl1u_main.c172
1 files changed, 4 insertions, 168 deletions
diff --git a/fwu/ns_bl1u/ns_bl1u_main.c b/fwu/ns_bl1u/ns_bl1u_main.c
index 4b2d3c6..956f9df 100644
--- a/fwu/ns_bl1u/ns_bl1u_main.c
+++ b/fwu/ns_bl1u/ns_bl1u_main.c
@@ -51,12 +51,6 @@
#define FWU_NON_EXEC (0x0)
#define FWU_EXEC (0x1)
-/* Expected number of SMC calls supported in BL1 */
-#define BL1_NUM_SMC_CALLS (10)
-
-/* Expected version of BL1 SMC implementation */
-#define BL1_SMC_VER_VALUE (1)
-
/* This size is used to exercise partial copy */
#define FWU_COPY_PARTIAL_SIZE (0x10)
@@ -64,6 +58,8 @@ extern const char version_string[];
typedef void (*ns_bl2u_entrypoint_t)(unsigned long);
+void ns_bl1u_fwu_test_main(void);
+
/*
* This structure will be used for:
* 1. Assigning unique image identifier.
@@ -103,7 +99,7 @@ static const fwu_image_load_desc_t ns_bl1u_desc[] = {
}
};
-unsigned long smc_result;
+static unsigned long smc_result;
#define CHECK_SMC_RESULT(_r) do { \
if (smc_result != _r) { \
@@ -112,7 +108,7 @@ unsigned long smc_result;
} \
} while (0);
-void ns_bl1u_fwu_smc_call(unsigned int smc_id,
+static void ns_bl1u_fwu_smc_call(unsigned int smc_id,
unsigned long x1,
unsigned long x2,
unsigned long x3,
@@ -124,166 +120,6 @@ void ns_bl1u_fwu_smc_call(unsigned int smc_id,
smc_result = fwu_result.ret0;
}
-#if FWU_BL_TEST
-/*******************************************************************************
- * Test the TF FWU SMC interface.
- ******************************************************************************/
-static void ns_bl1u_fwu_test_main(void)
-{
- unsigned int smc_fid;
-
- NOTICE("NS_BL1U: *****Starting NS_BL1U FWU test*****\n");
-
- /* Basic FWU SMC handler test cases. */
- INFO("NS_BL1U: Calling BL1_SMC_CALL_COUNT\n");
- ns_bl1u_fwu_smc_call(BL1_SMC_CALL_COUNT, 0, 0, 0, 0);
- CHECK_SMC_RESULT(BL1_NUM_SMC_CALLS);
-
- INFO("NS_BL1U: Calling BL1_SMC_VERSION\n");
- ns_bl1u_fwu_smc_call(BL1_SMC_VERSION, 0, 0, 0, 0);
- CHECK_SMC_RESULT(BL1_SMC_VER_VALUE);
-
- INFO("NS_BL1U: Calling invalid SMC\n");
- ns_bl1u_fwu_smc_call(0xdeadbeef, 0, 0, 0, 0);
- CHECK_SMC_RESULT(SMC_UNKNOWN);
-
- /* FWU_SMC_IMAGE_COPY test cases. */
- INFO("NS_BL1U: Doing FWU_SMC_IMAGE_COPY test\n");
- smc_fid = FWU_SMC_IMAGE_COPY;
-
- INFO("NS_BL1U: Calling with invalid image_id\n");
- ns_bl1u_fwu_smc_call(smc_fid, 0xdeadbeef, 0, 0, 0);
- CHECK_SMC_RESULT(-EPERM);
-
- INFO("NS_BL1U: Calling with non-secure image_id\n");
- ns_bl1u_fwu_smc_call(smc_fid, NS_BL2U_IMAGE_ID, 0, 0, 0);
- CHECK_SMC_RESULT(-EPERM);
-
- INFO("NS_BL1U: Calling with valid args\n");
- ns_bl1u_fwu_smc_call(smc_fid, FWU_CERT_ID,
- PLAT_ARM_FWU_FIP_BASE, 0x20, 0x20);
- CHECK_SMC_RESULT(STATUS_SUCCESS);
-
- INFO("NS_BL1U: Calling to copy an image_id again\n");
- ns_bl1u_fwu_smc_call(smc_fid, FWU_CERT_ID,
- PLAT_ARM_FWU_FIP_BASE, 0x20, 0x20);
- CHECK_SMC_RESULT(-EPERM);
-
- INFO("NS_BL1U: Calling with source address not mapped\n");
- ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID, 0, 0, 0);
- CHECK_SMC_RESULT(-ENOMEM);
-
- INFO("NS_BL1U: Calling with source size not mapped\n");
- ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID,
- PLAT_ARM_FWU_FIP_BASE, 0xdeadbeef, 0xdeadbeef);
- CHECK_SMC_RESULT(-ENOMEM);
-
- INFO("NS_BL1U: Calling with image size more than secure mem\n");
- ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID,
- PLAT_ARM_FWU_FIP_BASE, 0x40000, 0x40000);
- CHECK_SMC_RESULT(-ENOMEM);
-
- INFO("NS_BL1U: Calling with image size 0\n");
- ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID,
- PLAT_ARM_FWU_FIP_BASE, 0, 0);
- CHECK_SMC_RESULT(-ENOMEM);
-
- INFO("NS_BL1U: Calling with 1st block size in partial copy\n");
- ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID,
- PLAT_ARM_FWU_FIP_BASE, 0x20, 0x40);
- CHECK_SMC_RESULT(STATUS_SUCCESS);
-
- INFO("NS_BL1U: Calling FWU_SMC_IMAGE_AUTH while copying the image\n");
- ns_bl1u_fwu_smc_call(FWU_SMC_IMAGE_AUTH, BL2U_IMAGE_ID,
- PLAT_ARM_FWU_FIP_BASE, 0x40, 0);
- CHECK_SMC_RESULT(-EPERM);
-
- INFO("NS_BL1U: Calling with last block with invalid source"
- " in partial copy\n");
- ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID, 0, 0x21, 0x40);
- CHECK_SMC_RESULT(-ENOMEM);
-
- INFO("NS_BL1U: Calling with last block size > total size"
- " in partial copy\n");
- ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID,
- PLAT_ARM_FWU_FIP_BASE, 0x21, 0x40);
- CHECK_SMC_RESULT(STATUS_SUCCESS);
-
- INFO("NS_BL1U: Calling FWU_SMC_IMAGE_AUTH to RESET the image state\n");
- ns_bl1u_fwu_smc_call(FWU_SMC_IMAGE_AUTH, BL2U_IMAGE_ID,
- PLAT_ARM_FWU_FIP_BASE, 0x40, 0);
- CHECK_SMC_RESULT(-EAUTH);
-
- INFO("NS_BL1U: Calling with block size > total size\n");
- ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID,
- PLAT_ARM_FWU_FIP_BASE, 0x21, 0x20);
- CHECK_SMC_RESULT(STATUS_SUCCESS);
-
- INFO("NS_BL1U: Calling FWU_SMC_IMAGE_AUTH to RESET the image state\n");
- ns_bl1u_fwu_smc_call(FWU_SMC_IMAGE_AUTH, BL2U_IMAGE_ID,
- PLAT_ARM_FWU_FIP_BASE, 0x40, 0);
- CHECK_SMC_RESULT(-EAUTH);
-
-
- /* FWU_SMC_IMAGE_AUTH test cases. */
- INFO("NS_BL1U: Doing FWU_SMC_IMAGE_AUTH test\n");
- smc_fid = FWU_SMC_IMAGE_AUTH;
-
- INFO("NS_BL1U: Calling with invalid image_id\n");
- ns_bl1u_fwu_smc_call(smc_fid, 0, 0, 0, 0);
- CHECK_SMC_RESULT(-EPERM);
-
- INFO("NS_BL1U: Calling with secure image not copied\n");
- ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID, 0, 0, 0);
- CHECK_SMC_RESULT(-EPERM);
-
- INFO("NS_BL1U: Calling with source address not mapped\n");
- ns_bl1u_fwu_smc_call(smc_fid, NS_BL2U_IMAGE_ID, 0, 0, 0);
- CHECK_SMC_RESULT(-ENOMEM);
-
- INFO("NS_BL1U: Calling with source size not mapped\n");
- ns_bl1u_fwu_smc_call(smc_fid, NS_BL2U_IMAGE_ID,
- PLAT_ARM_FWU_FIP_BASE, 0xdeadbeef, 0);
- CHECK_SMC_RESULT(-ENOMEM);
-
- INFO("NS_BL1U: Calling with valid args for copied image\n");
- ns_bl1u_fwu_smc_call(smc_fid, FWU_CERT_ID, 0, 0, 0);
- CHECK_SMC_RESULT(-EAUTH);
-
- INFO("NS_BL1U: Calling FWU_SMC_IMAGE_COPY to copy after auth failure\n");
- ns_bl1u_fwu_smc_call(FWU_SMC_IMAGE_COPY, FWU_CERT_ID,
- PLAT_ARM_FWU_FIP_BASE, 0x40, 0x40);
- CHECK_SMC_RESULT(STATUS_SUCCESS);
-
- INFO("NS_BL1U: Calling with valid args for copied image\n");
- ns_bl1u_fwu_smc_call(smc_fid, FWU_CERT_ID, 0, 0, 0);
- CHECK_SMC_RESULT(-EAUTH);
-
- /* FWU_SMC_IMAGE_EXECUTE test cases. */
- INFO("NS_BL1U: Doing FWU_SMC_IMAGE_EXECUTE test\n");
- smc_fid = FWU_SMC_IMAGE_EXECUTE;
-
- INFO("NS_BL1U: Calling with invalid image_id\n");
- ns_bl1u_fwu_smc_call(smc_fid, 0, 0, 0, 0);
- CHECK_SMC_RESULT(-EPERM);
-
- INFO("NS_BL1U: Calling with non-executable image_id\n");
- ns_bl1u_fwu_smc_call(smc_fid, FWU_CERT_ID, 0, 0, 0);
- CHECK_SMC_RESULT(-EPERM);
-
- INFO("NS_BL1U: Calling with un-authenticated image_id\n");
- ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID, 0, 0, 0);
- CHECK_SMC_RESULT(-EPERM);
-
-
- /* FWU_SMC_IMAGE_RESUME test case. */
- INFO("NS_BL1U: Calling FWU_SMC_IMAGE_RESUME with invalid args\n");
- ns_bl1u_fwu_smc_call(FWU_SMC_IMAGE_RESUME, 0, 0, 0, 0);
- CHECK_SMC_RESULT(-EPERM);
-
- NOTICE("NS_BL1U: *****All FWU test passed*****\n");
-}
-#endif /* FWU_BL_TEST */
/*******************************************************************************
* Following are the responsibilities of NS_BL1U image: