1/* 2 * Copyright 2014, General Dynamics C4 Systems 3 * 4 * SPDX-License-Identifier: GPL-2.0-only 5 */ 6 7#include <types.h> 8#include <machine/registerset.h> 9#include <arch/machine.h> 10#include <plat/machine/hardware.h> 11 12word_t PURE getRestartPC(tcb_t *thread) 13{ 14 return getRegister(thread, FaultIP); 15} 16 17void setNextPC(tcb_t *thread, word_t v) 18{ 19 setRegister(thread, NEXT_PC_REG, v); 20} 21 22BOOT_CODE int get_num_avail_p_regs(void) 23{ 24 return sizeof(avail_p_regs) / sizeof(p_region_t); 25} 26 27BOOT_CODE const p_region_t *get_avail_p_regs(void) 28{ 29 return (const p_region_t *) avail_p_regs; 30} 31 32BOOT_CODE void map_kernel_devices(void) 33{ 34 for (int i = 0; i < ARRAY_SIZE(kernel_devices); i++) { 35 map_kernel_frame(kernel_devices[i].paddr, 36 kernel_devices[i].pptr, 37 VMKernelOnly, 38 vm_attributes_new(kernel_devices[i].armExecuteNever, 39 false, false)); 40 if (!kernel_devices[i].userAvailable) { 41 p_region_t reg = { 42 .start = kernel_devices[i].paddr, 43 .end = kernel_devices[i].paddr + (1 << PAGE_BITS), 44 }; 45 reserve_region(reg); 46 } 47 } 48} 49 50