Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | /* SPDX-License-Identifier: GPL-2.0+ */ /* * Ugly header containing required header files. This could be adjusted * so that including asm/arch/hardware includes the correct file. * * (C) Copyright 2000-2009 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ #ifndef __ASM_PPC_H #define __ASM_PPC_H #ifndef __ASSEMBLY__ #if defined(CONFIG_MPC8xx) #include <asm/immap_8xx.h> #endif #ifdef CONFIG_MPC85xx #include <mpc85xx.h> #include <asm/immap_85xx.h> #endif #ifdef CONFIG_MPC83xx #include <mpc83xx.h> #include <asm/immap_83xx.h> #endif #ifdef CONFIG_SOC_DA8XX #include <asm/arch/hardware.h> #endif #ifdef CONFIG_FSL_LSCH3 #include <asm/arch/immap_lsch3.h> #endif #ifdef CONFIG_FSL_LSCH2 #include <asm/arch/immap_lsch2.h> #endif #include <asm/processor.h> static inline uint get_immr(void) { return mfspr(SPRN_IMMR); } static inline uint get_pvr(void) { return mfspr(PVR); } static inline uint get_svr(void) { return mfspr(SVR); } #if defined(CONFIG_MPC85xx) || \ defined(CONFIG_MPC86xx) || \ defined(CONFIG_MPC83xx) unsigned char in8(unsigned int); void out8(unsigned int, unsigned char); unsigned short in16(unsigned int); unsigned short in16r(unsigned int); void out16(unsigned int, unsigned short value); void out16r(unsigned int, unsigned short value); unsigned long in32(unsigned int); unsigned long in32r(unsigned int); void out32(unsigned int, unsigned long value); void out32r(unsigned int, unsigned long value); void ppcDcbf(unsigned long value); void ppcDcbi(unsigned long value); void ppcSync(void); void ppcDcbz(unsigned long value); #endif #if defined(CONFIG_MPC83xx) void ppcDWload(unsigned int *addr, unsigned int *ret); void ppcDWstore(unsigned int *addr, unsigned int *value); void disable_addr_trans(void); void enable_addr_trans(void); #if defined(CONFIG_DDR_ECC) && !defined(CONFIG_ECC_INIT_VIA_DDRCONTROLLER) void ddr_enable_ecc(unsigned int dram_size); #endif #endif #if defined(CONFIG_MPC85xx) typedef MPC85xx_SYS_INFO sys_info_t; void get_sys_info(sys_info_t *); void ft_fixup_cpu(void *, u64); void ft_fixup_num_cores(void *); #endif #if defined(CONFIG_MPC86xx) ulong get_bus_freq(ulong); typedef MPC86xx_SYS_INFO sys_info_t; void get_sys_info(sys_info_t *); static inline ulong get_ddr_freq(ulong dummy) { return get_bus_freq(dummy); } #else ulong get_ddr_freq(ulong); #endif static inline unsigned long get_msr(void) { unsigned long msr; asm volatile ("mfmsr %0" : "=r" (msr) : ); return msr; } static inline void set_msr(unsigned long msr) { asm volatile ("mtmsr %0" : : "r" (msr)); } #ifdef CONFIG_CMD_REGINFO void print_reginfo(void); #endif void interrupt_init_cpu(unsigned *); void timer_interrupt_cpu(struct pt_regs *); unsigned long search_exception_table(unsigned long addr); void upmconfig(uint upm, uint *table, uint size); #endif /* !__ASSEMBLY__ */ #ifdef CONFIG_PPC /* * Has to be included outside of the #ifndef __ASSEMBLY__ section. * Otherwise might lead to compilation errors in assembler files. */ #include <asm/cache.h> #endif #endif |