18 #ifndef _VAL_COMMON_H_    19 #define _VAL_COMMON_H_    23 #ifndef VAL_NSPE_BUILD    24 #define STATIC_DECLARE  static    26 #define STATIC_DECLARE    30 #define __WEAK __attribute__((weak))    34 #define __UNUSED __attribute__((unused))    45 #define INT_MAX 0xFFFFFFFF    48 #define _CONCAT(A,B) A##B    49 #define CONCAT(A,B) _CONCAT(A,B)    52 #define TEST_START                 0x01    54 #define TEST_PASS                  0x04    55 #define TEST_FAIL                  0x08    56 #define TEST_SKIP                  0x10    57 #define TEST_PENDING               0x20    59 #define TEST_NUM_BIT                 32    60 #define TEST_STATE_BIT                8    61 #define TEST_STATUS_BIT               0    63 #define TEST_NUM_MASK        0xFFFFFFFF    64 #define TEST_STATE_MASK            0xFF    65 #define TEST_STATUS_MASK           0xFF    67 #define RESULT_START(status)    (((TEST_START) << TEST_STATE_BIT) | ((status) << TEST_STATUS_BIT))    68 #define RESULT_END(status)      (((TEST_END) << TEST_STATE_BIT) | ((status) << TEST_STATUS_BIT))    69 #define RESULT_PASS(status)     (((TEST_PASS) << TEST_STATE_BIT) | ((status) << TEST_STATUS_BIT))    70 #define RESULT_FAIL(status)     (((TEST_FAIL) << TEST_STATE_BIT) | ((status) << TEST_STATUS_BIT))    71 #define RESULT_SKIP(status)     (((TEST_SKIP) << TEST_STATE_BIT) | ((status) << TEST_STATUS_BIT))    72 #define RESULT_PENDING(status)  (((TEST_PENDING) << TEST_STATE_BIT) | ((status) << TEST_STATUS_BIT))    74 #define IS_TEST_FAIL(status)    (((status >> TEST_STATE_BIT) & TEST_STATE_MASK) == TEST_FAIL)    75 #define IS_TEST_PASS(status)    (((status >> TEST_STATE_BIT) & TEST_STATE_MASK) == TEST_PASS)    76 #define IS_TEST_SKIP(status)    (((status >> TEST_STATE_BIT) & TEST_STATE_MASK) == TEST_SKIP)    77 #define IS_TEST_PENDING(status) (((status >> TEST_STATE_BIT) & TEST_STATE_MASK) == TEST_PENDING)    78 #define IS_TEST_START(status)   (((status >> TEST_STATE_BIT) & TEST_STATE_MASK) == TEST_START)    79 #define IS_TEST_END(status)     (((status >> TEST_STATE_BIT) & TEST_STATE_MASK) == TEST_END)    80 #define VAL_ERROR(status)       ((status & TEST_STATUS_MASK) ? 1 : 0)    85 #define TEST_PUBLISH(test_id, entry)    87 #define VAL_MAX_TEST_PER_COMP                200    89 #define VAL_CRYPTO_BASE                        1    90 #define VAL_PROTECTED_STORAGE_BASE             2    91 #define VAL_INTERNAL_TRUSTED_STORAGE_BASE      3    92 #define VAL_INITIAL_ATTESTATION_BASE           4    94 #define VAL_GET_COMP_NUM(test_id)      \    95    ((test_id - (test_id % VAL_MAX_TEST_PER_COMP)) / VAL_MAX_TEST_PER_COMP)    96 #define VAL_GET_TEST_NUM(test_id)      (test_id % VAL_MAX_TEST_PER_COMP)    97 #define VAL_CREATE_TEST_ID(comp,num)   ((comp*VAL_MAX_TEST_PER_COMP) + num)    99 #define TEST_FIELD(num1,num2)           (num2 << 8 | num1)   100 #define GET_TEST_ISOLATION_LEVEL(num)   (num & 0x3)   101 #define GET_WD_TIMOUT_TYPE(num)         ((num >> 8) & 0x7)   103 #define TEST_CHECKPOINT_NUM(n)          n   107 #define BLOCK_NUM_POS                   8   108 #define ACTION_POS                      16   109 #define GET_TEST_NUM(n)                 (0xff & n)   110 #define GET_BLOCK_NUM(n)                ((n >> BLOCK_NUM_POS) & 0xff)   112 #define GET_ACTION_NUM(n)               ((n >> ACTION_POS) & 0xff)   113 #define TEST_EXECUTE_FUNC               1   114 #define TEST_RETURN_RESULT              2   115 #define INVALID_HANDLE                  0x1234DEAD   117 #define VAL_NVMEM_BLOCK_SIZE           4   118 #define VAL_NVMEM_OFFSET(nvmem_idx)    (nvmem_idx * VAL_NVMEM_BLOCK_SIZE)   120 #define UART_INIT_SIGN  0xff   121 #define UART_PRINT_SIGN 0xfe   123 #define TEST_PANIC()                          \   127 #define TEST_ASSERT_EQUAL(arg1, arg2, checkpoint)                                   \   129         if ((arg1) != arg2)                                                         \   131             val->print(PRINT_ERROR, "\tFailed at Checkpoint: %d\n", checkpoint);    \   132             val->print(PRINT_ERROR, "\tActual: %d\n", arg1);                        \   133             val->print(PRINT_ERROR, "\tExpected: %d\n", arg2);                      \   138 #define TEST_ASSERT_DUAL(arg1, status1, status2, checkpoint)                        \   140         if ((arg1) != status1 && (arg1) != status2)                                 \   142             val->print(PRINT_ERROR, "\tFailed at Checkpoint: %d\n", checkpoint);    \   143             val->print(PRINT_ERROR, "\tActual: %d\n", arg1);                        \   144             val->print(PRINT_ERROR, "\tExpected: %d", status1);                     \   145             val->print(PRINT_ERROR, "or %d\n", status2);                            \   150 #define TEST_ASSERT_NOT_EQUAL(arg1, arg2, checkpoint)                               \   152         if ((arg1) == arg2)                                                         \   154             val->print(PRINT_ERROR, "\tFailed at Checkpoint: %d\n", checkpoint);    \   155             val->print(PRINT_ERROR, "\tValue: %d\n", arg1);                         \   160 #define TEST_ASSERT_MEMCMP(buf1, buf2, size, checkpoint)                            \   162         if (memcmp(buf1, buf2, size))                                               \   164             val->print(PRINT_ERROR, "\tFailed at Checkpoint: %d : ", checkpoint);   \   165             val->print(PRINT_ERROR, "Unequal data in compared buffers\n", 0);       \   172     CALLER_NONSECURE = 0x0,
   177     TEST_ISOLATION_L1      = 0x1,
   178     TEST_ISOLATION_L2      = 0x2,
   179     TEST_ISOLATION_L3      = 0x3,
   180 } test_isolation_level_t;
   184     BOOT_NOT_EXPECTED          = 0x2,
   185     BOOT_EXPECTED_NS           = 0x3,
   186     BOOT_EXPECTED_S            = 0x4,
   187     BOOT_EXPECTED_BUT_FAILED   = 0x5,
   188     BOOT_EXPECTED_CRYPTO       = 0x6,
   193     NV_TEST_ID_PREVIOUS = 0x1,
   194     NV_TEST_ID_CURRENT  = 0x2,
   200     VAL_STATUS_SUCCESS                     = 0x0,
   201     VAL_STATUS_INVALID                     = 0x10,
   202     VAL_STATUS_ERROR                       = 0x11,
   203     VAL_STATUS_NOT_FOUND                   = 0x12,
   204     VAL_STATUS_LOAD_ERROR                  = 0x13,
   205     VAL_STATUS_INSUFFICIENT_SIZE           = 0x14,
   206     VAL_STATUS_CONNECTION_FAILED           = 0x15,
   207     VAL_STATUS_CALL_FAILED                 = 0x16,
   208     VAL_STATUS_READ_FAILED                 = 0x17,
   209     VAL_STATUS_WRITE_FAILED                = 0x18,
   210     VAL_STATUS_ISOLATION_LEVEL_NOT_SUPP    = 0x19,
   211     VAL_STATUS_INIT_FAILED                 = 0x1A,
   212     VAL_STATUS_SPM_FAILED                  = 0x1B,
   213     VAL_STATUS_SPM_UNEXPECTED_BEH          = 0x1C,
   214     VAL_STATUS_FRAMEWORK_VERSION_FAILED    = 0x1D,
   215     VAL_STATUS_VERSION_API_FAILED          = 0x1E,
   216     VAL_STATUS_INVALID_HANDLE              = 0x1F,
   217     VAL_STATUS_INVALID_MSG_TYPE            = 0x20,
   218     VAL_STATUS_WRONG_IDENTITY              = 0x21,
   219     VAL_STATUS_MSG_INSIZE_FAILED           = 0x22,
   220     VAL_STATUS_MSG_OUTSIZE_FAILED          = 0x23,
   221     VAL_STATUS_SKIP_FAILED                 = 0x24,
   222     VAL_STATUS_CRYPTO_FAILURE              = 0x25,
   223     VAL_STATUS_INVALID_SIZE                = 0x26,
   224     VAL_STATUS_DATA_MISMATCH               = 0x27,
   225     VAL_STATUS_BOOT_EXPECTED_BUT_FAILED    = 0x28,
   226     VAL_STATUS_INIT_ALREADY_DONE           = 0x29,
   227     VAL_STATUS_HEAP_NOT_AVAILABLE          = 0x2A,
   228     VAL_STATUS_UNSUPPORTED                 = 0x2B,
   229     VAL_STATUS_ERROR_MAX                   = INT_MAX,
   244     TEST_PSA_EOI_WITH_NON_INTR_SIGNAL    = 1,
   245     TEST_PSA_EOI_WITH_MULTIPLE_SIGNALS   = 2,
   246     TEST_PSA_EOI_WITH_UNASSERTED_SIGNAL  = 3,
   247     TEST_INTR_SERVICE                    = 4,
   256     uint32_t pass_cnt: 8;
   257     uint32_t skip_cnt: 8;
   258     uint32_t fail_cnt: 8;
   259     uint32_t sim_error_cnt: 8;
   275 typedef int32_t (*client_test_t)(caller_security_t caller);
   276 typedef int32_t (*server_test_t)(void);
 Copyright (c) 2018, Arm Limited or its affiliates.