1d6aed566Sopenharmony_ci/* 2d6aed566Sopenharmony_ci * Copyright (c) 2020-2021 Huawei Device Co., Ltd. 3d6aed566Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4d6aed566Sopenharmony_ci * you may not use this file except in compliance with the License. 5d6aed566Sopenharmony_ci * You may obtain a copy of the License at 6d6aed566Sopenharmony_ci * 7d6aed566Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8d6aed566Sopenharmony_ci * 9d6aed566Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10d6aed566Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11d6aed566Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12d6aed566Sopenharmony_ci * See the License for the specific language governing permissions and 13d6aed566Sopenharmony_ci * limitations under the License. 14d6aed566Sopenharmony_ci */ 15d6aed566Sopenharmony_ci 16d6aed566Sopenharmony_ci#include "asm/platform.h" 17d6aed566Sopenharmony_ci#include "asm/io.h" 18d6aed566Sopenharmony_ci#include "soc/sys_ctrl.h" 19d6aed566Sopenharmony_ci#include "los_typedef.h" 20d6aed566Sopenharmony_ci#include "los_hwi.h" 21d6aed566Sopenharmony_ci#include "los_task_pri.h" 22d6aed566Sopenharmony_ci#include "los_spinlock.h" 23d6aed566Sopenharmony_ci#ifdef LOSCFG_DRIVERS_RANDOM 24d6aed566Sopenharmony_ci#include "soc/random.h" 25d6aed566Sopenharmony_ci#endif 26d6aed566Sopenharmony_ci#include "los_vm_map.h" 27d6aed566Sopenharmony_ci#include "los_vm_zone.h" 28d6aed566Sopenharmony_ci#include "los_vm_boot.h" 29d6aed566Sopenharmony_ci#include "los_mmu_descriptor_v6.h" 30d6aed566Sopenharmony_ci 31d6aed566Sopenharmony_ciUINT32 OsRandomStackGuard(VOID) 32d6aed566Sopenharmony_ci{ 33d6aed566Sopenharmony_ci#ifdef LOSCFG_DRIVERS_RANDOM 34d6aed566Sopenharmony_ci UINT32 stackGuard = 0; 35d6aed566Sopenharmony_ci 36d6aed566Sopenharmony_ci HiRandomHwInit(); 37d6aed566Sopenharmony_ci (VOID)HiRandomHwGetInteger(&stackGuard); 38d6aed566Sopenharmony_ci HiRandomHwDeinit(); 39d6aed566Sopenharmony_ci return stackGuard; 40d6aed566Sopenharmony_ci#else 41d6aed566Sopenharmony_ci return 0; 42d6aed566Sopenharmony_ci#endif 43d6aed566Sopenharmony_ci} 44d6aed566Sopenharmony_ci 45d6aed566Sopenharmony_civoid OsReboot(void) 46d6aed566Sopenharmony_ci{ 47d6aed566Sopenharmony_ci writel(0xffffffff, (SYS_CTRL_REG_BASE + REG_SC_SYSRES)); 48d6aed566Sopenharmony_ci} 49d6aed566Sopenharmony_ci 50d6aed566Sopenharmony_civoid InitRebootHook(void) 51d6aed566Sopenharmony_ci{ 52d6aed566Sopenharmony_ci OsSetRebootHook(OsReboot); 53d6aed566Sopenharmony_ci} 54d6aed566Sopenharmony_ci 55d6aed566Sopenharmony_ci#ifdef LOSCFG_KERNEL_MMU 56d6aed566Sopenharmony_ciLosArchMmuInitMapping g_archMmuInitMapping[] = { 57d6aed566Sopenharmony_ci { 58d6aed566Sopenharmony_ci .phys = SYS_MEM_BASE, 59d6aed566Sopenharmony_ci .virt = KERNEL_VMM_BASE, 60d6aed566Sopenharmony_ci .size = KERNEL_VMM_SIZE, 61d6aed566Sopenharmony_ci .flags = MMU_DESCRIPTOR_KERNEL_L1_PTE_FLAGS, 62d6aed566Sopenharmony_ci .name = "KernelCached", 63d6aed566Sopenharmony_ci }, 64d6aed566Sopenharmony_ci { 65d6aed566Sopenharmony_ci .phys = SYS_MEM_BASE, 66d6aed566Sopenharmony_ci .virt = UNCACHED_VMM_BASE, 67d6aed566Sopenharmony_ci .size = UNCACHED_VMM_SIZE, 68d6aed566Sopenharmony_ci .flags = MMU_INITIAL_MAP_NORMAL_NOCACHE, 69d6aed566Sopenharmony_ci .name = "KernelUncached", 70d6aed566Sopenharmony_ci }, 71d6aed566Sopenharmony_ci { 72d6aed566Sopenharmony_ci .phys = PERIPH_PMM_BASE, 73d6aed566Sopenharmony_ci .virt = PERIPH_DEVICE_BASE, 74d6aed566Sopenharmony_ci .size = PERIPH_DEVICE_SIZE, 75d6aed566Sopenharmony_ci .flags = MMU_INITIAL_MAP_DEVICE, 76d6aed566Sopenharmony_ci .name = "PeriphDevice", 77d6aed566Sopenharmony_ci }, 78d6aed566Sopenharmony_ci { 79d6aed566Sopenharmony_ci .phys = PERIPH_PMM_BASE, 80d6aed566Sopenharmony_ci .virt = PERIPH_CACHED_BASE, 81d6aed566Sopenharmony_ci .size = PERIPH_CACHED_SIZE, 82d6aed566Sopenharmony_ci .flags = MMU_DESCRIPTOR_KERNEL_L1_PTE_FLAGS, 83d6aed566Sopenharmony_ci .name = "PeriphCached", 84d6aed566Sopenharmony_ci }, 85d6aed566Sopenharmony_ci { 86d6aed566Sopenharmony_ci .phys = PERIPH_PMM_BASE, 87d6aed566Sopenharmony_ci .virt = PERIPH_UNCACHED_BASE, 88d6aed566Sopenharmony_ci .size = PERIPH_UNCACHED_SIZE, 89d6aed566Sopenharmony_ci .flags = MMU_INITIAL_MAP_STRONGLY_ORDERED, 90d6aed566Sopenharmony_ci .name = "PeriphStronglyOrdered", 91d6aed566Sopenharmony_ci }, 92d6aed566Sopenharmony_ci {0} 93d6aed566Sopenharmony_ci}; 94d6aed566Sopenharmony_ci#endif 95