/* SPDX-License-Identifier: GPL-2.0+ */ /* * (C) Copyright 2002 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * Copyright (c) 2017 Microsemi Corporation. * Padmarao Begari, Microsemi Corporation */ #ifndef __ASM_GBL_DATA_H #define __ASM_GBL_DATA_H #include #include #include /* Architecture-specific global data */ struct arch_global_data { long boot_hart; /* boot hart id */ phys_addr_t firmware_fdt_addr; #if CONFIG_IS_ENABLED(RISCV_ACLINT) void __iomem *aclint; /* aclint base address */ #endif #ifdef CONFIG_ANDES_PLICSW void __iomem *plicsw; /* andes plicsw base address */ #endif #if CONFIG_IS_ENABLED(SMP) struct ipi_data ipi[CONFIG_NR_CPUS]; #endif #if !CONFIG_IS_ENABLED(XIP) #ifdef CONFIG_AVAILABLE_HARTS ulong available_harts; #endif #endif #ifdef CONFIG_SMBIOS ulong smbios_start; /* Start address of SMBIOS table */ #endif }; #include #define DECLARE_GLOBAL_DATA_PTR register gd_t *gd asm ("gp") static inline void set_gd(volatile gd_t *gd_ptr) { #ifdef CONFIG_64BIT asm volatile("ld gp, %0\n" : : "m"(gd_ptr)); #else asm volatile("lw gp, %0\n" : : "m"(gd_ptr)); #endif } #endif /* __ASM_GBL_DATA_H */