1 /* 2 * Copyright 2021 The Hafnium Authors. 3 * 4 * Use of this source code is governed by a BSD-style 5 * license that can be found in the LICENSE file or at 6 * https://opensource.org/licenses/BSD-3-Clause. 7 */ 8 9 #include <stdalign.h> 10 #include <stdint.h> 11 12 #include "hf/ffa.h" 13 #include "hf/mm.h" 14 #include "hf/std.h" 15 16 #include "vmapi/hf/call.h" 17 18 #include "test/hftest.h" 19 #include "test/vmapi/ffa.h" 20 21 alignas(4096) uint8_t kstack[4096]; 22 23 HFTEST_ENABLE(); 24 25 static struct hftest_context global_context; 26 hftest_get_context(void)27struct hftest_context *hftest_get_context(void) 28 { 29 return &global_context; 30 } 31 32 bool sel1_secure_service = false; 33 34 void test_main_sp(bool); 35 abort(void)36noreturn void abort(void) 37 { 38 HFTEST_LOG("Service contained failures."); 39 /* Cause a fault, as a secondary can't power down the machine. */ 40 *((volatile uint8_t *)1) = 1; 41 42 /* This should never be reached, but to make the compiler happy... */ 43 for (;;) { 44 } 45 } 46 kmain(void)47noreturn void kmain(void) 48 { 49 /* Register RX/TX buffers via FFA_RXTX_MAP */ 50 set_up_mailbox(); 51 52 test_main_sp(true); 53 54 /* Do not expect to get to this point, so abort. */ 55 abort(); 56 } 57