1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * (C) Copyright 2002 4 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 5 * 6 * Copyright (c) 2017 Microsemi Corporation. 7 * Padmarao Begari, Microsemi Corporation <padmarao.begari@microsemi.com> 8 */ 9 10 #ifndef __ASM_GBL_DATA_H 11 #define __ASM_GBL_DATA_H 12 13 #include <asm/smp.h> 14 #include <asm/u-boot.h> 15 #include <compiler.h> 16 17 /* Architecture-specific global data */ 18 struct arch_global_data { 19 long boot_hart; /* boot hart id */ 20 phys_addr_t firmware_fdt_addr; 21 #ifdef CONFIG_SIFIVE_CLINT 22 void __iomem *clint; /* clint base address */ 23 #endif 24 #ifdef CONFIG_ANDES_PLIC 25 void __iomem *plic; /* plic base address */ 26 #endif 27 #if CONFIG_IS_ENABLED(SMP) 28 struct ipi_data ipi[CONFIG_NR_CPUS]; 29 #endif 30 #ifndef CONFIG_XIP 31 ulong available_harts; 32 #endif 33 }; 34 35 #include <asm-generic/global_data.h> 36 37 #define DECLARE_GLOBAL_DATA_PTR register gd_t *gd asm ("gp") 38 set_gd(volatile gd_t * gd_ptr)39static inline void set_gd(volatile gd_t *gd_ptr) 40 { 41 #ifdef CONFIG_64BIT 42 asm volatile("ld gp, %0\n" : : "m"(gd_ptr)); 43 #else 44 asm volatile("lw gp, %0\n" : : "m"(gd_ptr)); 45 #endif 46 } 47 48 #endif /* __ASM_GBL_DATA_H */ 49