diff options
Diffstat (limited to 'arch')
24 files changed, 113 insertions, 80 deletions
| diff --git a/arch/arm/cpu/armv7/omap-common/clocks-common.c b/arch/arm/cpu/armv7/omap-common/clocks-common.c index bb77b5ca3..dfa3760df 100644 --- a/arch/arm/cpu/armv7/omap-common/clocks-common.c +++ b/arch/arm/cpu/armv7/omap-common/clocks-common.c @@ -779,7 +779,8 @@ void gpi2c_init(void)  	static int gpi2c = 1;  	if (gpi2c) { -		i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); +		i2c_init(CONFIG_SYS_OMAP24_I2C_SPEED, +			 CONFIG_SYS_OMAP24_I2C_SLAVE);  		gpi2c = 0;  	}  } diff --git a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds index 5e93b343e..02aa12973 100644 --- a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds +++ b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds @@ -33,6 +33,11 @@ SECTIONS  	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram  	. = ALIGN(4); +	.u_boot_list : { +		KEEP(*(SORT(.u_boot_list*_i2c_*))); +	} >.sram + +	. = ALIGN(4);  	__image_copy_end = .;  	_end = .; diff --git a/arch/arm/cpu/armv7/omap3/board.c b/arch/arm/cpu/armv7/omap3/board.c index 7d1f8d9d2..29228160c 100644 --- a/arch/arm/cpu/armv7/omap3/board.c +++ b/arch/arm/cpu/armv7/omap3/board.c @@ -98,7 +98,7 @@ void spl_board_init(void)  	gpmc_init();  #endif  #ifdef CONFIG_SPL_I2C_SUPPORT -	i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); +	i2c_init(CONFIG_SYS_OMAP24_I2C_SPEED, CONFIG_SYS_OMAP24_I2C_SLAVE);  #endif  }  #endif /* CONFIG_SPL_BUILD */ diff --git a/arch/arm/cpu/armv7/omap3/clock.c b/arch/arm/cpu/armv7/omap3/clock.c index 9f989ff86..14fc7e8e8 100644 --- a/arch/arm/cpu/armv7/omap3/clock.c +++ b/arch/arm/cpu/armv7/omap3/clock.c @@ -708,7 +708,7 @@ void per_clocks_enable(void)  	sr32(&prcm_base->iclken_per, 17, 1, 1);  #endif -#ifdef CONFIG_DRIVER_OMAP34XX_I2C +#ifdef CONFIG_SYS_I2C_OMAP34XX  	/* Turn on all 3 I2C clocks */  	sr32(&prcm_base->fclken1_core, 15, 3, 0x7);  	sr32(&prcm_base->iclken1_core, 15, 3, 0x7);	/* I2C1,2,3 = on */ diff --git a/arch/arm/cpu/armv7/rmobile/Makefile b/arch/arm/cpu/armv7/rmobile/Makefile index 8f4cf3a19..5e296c420 100644 --- a/arch/arm/cpu/armv7/rmobile/Makefile +++ b/arch/arm/cpu/armv7/rmobile/Makefile @@ -15,10 +15,4 @@ obj-$(CONFIG_R8A7740) += cpu_info-r8a7740.o  obj-$(CONFIG_R8A7740) += pfc-r8a7740.o  obj-$(CONFIG_SH73A0) += cpu_info-sh73a0.o  obj-$(CONFIG_SH73A0) += pfc-sh73a0.o -obj-$(CONFIG_TMU_TIMER) += sh_timer.o - -SRCS += $(obj)sh_timer.c -# from arch/sh/lib/ directory -$(obj)sh_timer.c: -	@rm -f $(obj)sh_timer.c -	ln -s $(SRCTREE)/arch/sh/lib/time.c $(obj)sh_timer.c +obj-$(CONFIG_TMU_TIMER) += ../../../../sh/lib/time.o diff --git a/arch/arm/include/asm/arch-am33xx/i2c.h b/arch/arm/include/asm/arch-am33xx/i2c.h index 8bfa53f41..8642c8f87 100644 --- a/arch/arm/include/asm/arch-am33xx/i2c.h +++ b/arch/arm/include/asm/arch-am33xx/i2c.h @@ -4,8 +4,8 @@   *   * SPDX-License-Identifier:	GPL-2.0+   */ -#ifndef _I2C_H_ -#define _I2C_H_ +#ifndef _I2C_AM33XX_H_ +#define _I2C_AM33XX_H_  #define  I2C_BASE1		0x44E0B000  #define  I2C_BASE2		0x4802A000 @@ -62,4 +62,4 @@ struct i2c {  #define I2C_IP_CLK			48000000  #define I2C_INTERNAL_SAMPLING_CLK	12000000 -#endif /* _I2C_H_ */ +#endif /* _I2C_AM33XX_H_ */ diff --git a/arch/blackfin/cpu/os_log.c b/arch/blackfin/cpu/os_log.c index e1c8e2948..2092d9e3b 100644 --- a/arch/blackfin/cpu/os_log.c +++ b/arch/blackfin/cpu/os_log.c @@ -12,12 +12,12 @@  #define OS_LOG_MAGIC_ADDR  ((unsigned long *)0x4f0)  #define OS_LOG_PTR_ADDR    ((char **)0x4f4) -bool bfin_os_log_check(void) +int bfin_os_log_check(void)  {  	if (*OS_LOG_MAGIC_ADDR != OS_LOG_MAGIC) -		return false; +		return 0;  	*OS_LOG_MAGIC_ADDR = 0; -	return true; +	return 1;  }  void bfin_os_log_dump(void) diff --git a/arch/blackfin/include/asm/blackfin_local.h b/arch/blackfin/include/asm/blackfin_local.h index ab31dcb81..8ea8cde69 100644 --- a/arch/blackfin/include/asm/blackfin_local.h +++ b/arch/blackfin/include/asm/blackfin_local.h @@ -51,7 +51,7 @@ extern u_long get_dclk(void);  # define bfin_revid() (bfin_read_CHIPID() >> 28) -extern bool bfin_os_log_check(void); +extern int bfin_os_log_check(void);  extern void bfin_os_log_dump(void);  extern void blackfin_icache_flush_range(const void *, const void *); diff --git a/arch/microblaze/cpu/u-boot.lds b/arch/microblaze/cpu/u-boot.lds index 3e6204de3..fdad20753 100644 --- a/arch/microblaze/cpu/u-boot.lds +++ b/arch/microblaze/cpu/u-boot.lds @@ -30,7 +30,7 @@ SECTIONS  	{  		__data_start = .;  #ifdef CONFIG_OF_EMBED -		dts/libdts.o (.data) +		dts/built-in.o (.data)  #endif  		*(.data)  		__data_end = .; diff --git a/arch/mips/include/asm/malta.h b/arch/mips/include/asm/malta.h index 9b1100bc4..bd9043d51 100644 --- a/arch/mips/include/asm/malta.h +++ b/arch/mips/include/asm/malta.h @@ -44,7 +44,7 @@  #define MALTA_RESET_BASE		0x1f000500  #define GORESET				0x42 -#define MALTA_FLASH_BASE		0x1fc00000 +#define MALTA_FLASH_BASE		0x1e000000  #define MALTA_REVISION			0x1fc00010  #define MALTA_REVISION_CORID_SHF	10 diff --git a/arch/powerpc/cpu/Makefile b/arch/powerpc/cpu/Makefile new file mode 100644 index 000000000..d630abe1d --- /dev/null +++ b/arch/powerpc/cpu/Makefile @@ -0,0 +1,3 @@ +ifneq ($(filter mpc83xx mpc85xx mpc86xx,$(CPU)),) +obj-y += mpc8xxx/ +endif diff --git a/arch/powerpc/cpu/mpc512x/Makefile b/arch/powerpc/cpu/mpc512x/Makefile index f770350dc..a4934ef78 100644 --- a/arch/powerpc/cpu/mpc512x/Makefile +++ b/arch/powerpc/cpu/mpc512x/Makefile @@ -4,8 +4,6 @@  # SPDX-License-Identifier:	GPL-2.0+  # -$(shell mkdir -p $(OBJTREE)/board/freescale/common) -  extra-y	= start.o  obj-y	:= cpu.o  obj-y	+= traps.o diff --git a/arch/powerpc/cpu/mpc824x/.gitignore b/arch/powerpc/cpu/mpc824x/.gitignore deleted file mode 100644 index 2d79931e9..000000000 --- a/arch/powerpc/cpu/mpc824x/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/bedbug_603e.c diff --git a/arch/powerpc/cpu/mpc824x/Makefile b/arch/powerpc/cpu/mpc824x/Makefile index 67b0d1713..2c8be9257 100644 --- a/arch/powerpc/cpu/mpc824x/Makefile +++ b/arch/powerpc/cpu/mpc824x/Makefile @@ -5,15 +5,7 @@  # SPDX-License-Identifier:	GPL-2.0+  # -ifneq ($(OBJTREE),$(SRCTREE)) -$(shell mkdir -p $(obj)drivers/epic $(obj)drivers/i2c) -endif -  extra-y	= start.o  obj-y	= traps.o cpu.o cpu_init.o interrupts.o speed.o \  	  drivers/epic/epic1.o drivers/i2c/i2c.o pci.o -obj-y += bedbug_603e.o - -SRCS += $(obj)bedbug_603e.c -$(obj)bedbug_603e.c: -	ln -sf $(src)../mpc8260/bedbug_603e.c $(obj)bedbug_603e.c +obj-y += ../mpc8260/bedbug_603e.o diff --git a/arch/powerpc/cpu/mpc83xx/Makefile b/arch/powerpc/cpu/mpc83xx/Makefile index b7142f0df..d3f700147 100644 --- a/arch/powerpc/cpu/mpc83xx/Makefile +++ b/arch/powerpc/cpu/mpc83xx/Makefile @@ -39,20 +39,10 @@ obj-$(CONFIG_OF_LIBFDT) += fdt.o  obj-y += cache.o  ifdef CONFIG_FSL_DDR2 -obj-$(CONFIG_MPC8349) += ddr-gen2.o -SRCS += $(obj)ddr-gen2.c +obj-$(CONFIG_MPC8349) += ../mpc85xx/ddr-gen2.o  else  obj-y += spd_sdram.o  endif  obj-$(CONFIG_FSL_DDR2) += law.o  endif # not minimal - -$(obj)ddr-gen1.c: -	ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/ddr-gen1.c $(obj)ddr-gen1.c - -$(obj)ddr-gen2.c: -	ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/ddr-gen2.c $(obj)ddr-gen2.c - -$(obj)ddr-gen3.c: -	ln -sf $(SRCTREE)/arch/powerpc/cpu/mpc85xx/ddr-gen3.c $(obj)ddr-gen3.c diff --git a/arch/powerpc/cpu/mpc85xx/Makefile b/arch/powerpc/cpu/mpc85xx/Makefile index 50ddb5040..a34014f30 100644 --- a/arch/powerpc/cpu/mpc85xx/Makefile +++ b/arch/powerpc/cpu/mpc85xx/Makefile @@ -70,6 +70,9 @@ obj-$(CONFIG_PPC_B4860)	+= ddr-gen3.o  obj-$(CONFIG_BSC9131)		+= ddr-gen3.o  obj-$(CONFIG_BSC9132)		+= ddr-gen3.o  obj-$(CONFIG_PPC_T1040)	+= ddr-gen3.o +obj-$(CONFIG_PPC_T1042)	+= ddr-gen3.o +obj-$(CONFIG_PPC_T1020)	+= ddr-gen3.o +obj-$(CONFIG_PPC_T1022)	+= ddr-gen3.o  obj-$(CONFIG_CPM2)	+= ether_fcc.o  obj-$(CONFIG_OF_LIBFDT) += fdt.o @@ -89,6 +92,10 @@ obj-$(CONFIG_PPC_T4160) += t4240_ids.o  obj-$(CONFIG_PPC_B4420) += b4860_ids.o  obj-$(CONFIG_PPC_B4860) += b4860_ids.o  obj-$(CONFIG_PPC_T1040) += t1040_ids.o +obj-$(CONFIG_PPC_T1042)	+= t1040_ids.o +obj-$(CONFIG_PPC_T1020)	+= t1040_ids.o +obj-$(CONFIG_PPC_T1022)	+= t1040_ids.o +  obj-$(CONFIG_QE)	+= qe_io.o  obj-$(CONFIG_CPM2)	+= serial_scc.o @@ -128,6 +135,9 @@ obj-$(CONFIG_PPC_B4420) += b4860_serdes.o  obj-$(CONFIG_PPC_B4860) += b4860_serdes.o  obj-$(CONFIG_BSC9132) += bsc9132_serdes.o  obj-$(CONFIG_PPC_T1040) += t1040_serdes.o +obj-$(CONFIG_PPC_T1042)	+= t1040_serdes.o +obj-$(CONFIG_PPC_T1020)	+= t1040_serdes.o +obj-$(CONFIG_PPC_T1022)	+= t1040_serdes.o  obj-y	+= cpu.o  obj-y	+= cpu_init.o diff --git a/arch/powerpc/cpu/mpc85xx/fdt.c b/arch/powerpc/cpu/mpc85xx/fdt.c index 2ccd9c7b9..33bc90016 100644 --- a/arch/powerpc/cpu/mpc85xx/fdt.c +++ b/arch/powerpc/cpu/mpc85xx/fdt.c @@ -586,6 +586,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)  {  	int off;  	int val; +	int len;  	sys_info_t sysinfo;  	/* delete crypto node if not on an E-processor */ @@ -615,8 +616,8 @@ void ft_cpu_setup(void *blob, bd_t *bd)  	get_sys_info(&sysinfo);  	off = fdt_node_offset_by_prop_value(blob, -1, "device_type", "cpu", 4);  	while (off != -FDT_ERR_NOTFOUND) { -		u32 *reg = (u32 *)fdt_getprop(blob, off, "reg", 0); -		val = cpu_to_fdt32(sysinfo.freq_processor[*reg]); +		u32 *reg = (u32 *)fdt_getprop(blob, off, "reg", &len); +		val = cpu_to_fdt32(sysinfo.freq_processor[(*reg) / (len / 4)]);  		fdt_setprop(blob, off, "clock-frequency", &val, 4);  		off = fdt_node_offset_by_prop_value(blob, off, "device_type",  							"cpu", 4); diff --git a/arch/powerpc/cpu/mpc85xx/liodn.c b/arch/powerpc/cpu/mpc85xx/liodn.c index 4b00da9f7..19e130e87 100644 --- a/arch/powerpc/cpu/mpc85xx/liodn.c +++ b/arch/powerpc/cpu/mpc85xx/liodn.c @@ -239,9 +239,9 @@ static void fdt_fixup_srio_liodn(void *blob, struct srio_liodn_id_table *tbl)  #endif  #define CONFIG_SYS_MAX_PCI_EPS		8 -#define CONFIG_SYS_PCI_EP_LIODN_START	256 -static void fdt_fixup_pci_liodn_offsets(void *fdt, const char *compat) +static void fdt_fixup_pci_liodn_offsets(void *fdt, const char *compat, +					int ep_liodn_start)  {  	int off, pci_idx = 0, pci_cnt = 0, i, rc;  	const uint32_t *base_liodn; @@ -271,7 +271,7 @@ static void fdt_fixup_pci_liodn_offsets(void *fdt, const char *compat)  			continue;  		}  		for (i = 0; i < CONFIG_SYS_MAX_PCI_EPS; i++) -			liodn_offs[i + 1] = CONFIG_SYS_PCI_EP_LIODN_START + +			liodn_offs[i + 1] = ep_liodn_start +  					i * pci_cnt + pci_idx - *base_liodn;  		rc = fdt_setprop(fdt, off, "fsl,liodn-offset-list",  				 liodn_offs, sizeof(liodn_offs)); @@ -338,5 +338,22 @@ void fdt_fixup_liodn(void *blob)  	fdt_fixup_liodn_tbl(blob, rman_liodn_tbl, rman_liodn_tbl_sz);  #endif -	fdt_fixup_pci_liodn_offsets(blob, "fsl,qoriq-pcie-v2.4"); +	ccsr_pcix_t *pcix = (ccsr_pcix_t *)CONFIG_SYS_PCIE1_ADDR; +	int pci_ver = pcix->ipver1 & 0xffff, liodn_base = 0; + +	if (pci_ver >= 0x0204) { +		if (pci_ver >= 0x0300) +			liodn_base = 1024; +		else +			liodn_base = 256; +	} + +	if (liodn_base) { +		char compat[32]; + +		sprintf(compat, "fsl,qoriq-pcie-v%d.%d", +			(pci_ver & 0xff00) >> 8, pci_ver & 0xff); +		fdt_fixup_pci_liodn_offsets(blob, compat, liodn_base); +		fdt_fixup_pci_liodn_offsets(blob, "fsl,qoriq-pcie", liodn_base); +	}  } diff --git a/arch/powerpc/cpu/mpc85xx/t4240_ids.c b/arch/powerpc/cpu/mpc85xx/t4240_ids.c index 54c1cfd2c..f18131513 100644 --- a/arch/powerpc/cpu/mpc85xx/t4240_ids.c +++ b/arch/powerpc/cpu/mpc85xx/t4240_ids.c @@ -86,10 +86,10 @@ struct liodn_id_table liodn_tbl[] = {  	SET_SATA_LIODN(1, 555),  	SET_SATA_LIODN(2, 556), -	SET_PCI_LIODN(CONFIG_SYS_FSL_PCIE_COMPAT, 1, 148), -	SET_PCI_LIODN(CONFIG_SYS_FSL_PCIE_COMPAT, 2, 228), -	SET_PCI_LIODN(CONFIG_SYS_FSL_PCIE_COMPAT, 3, 308), -	SET_PCI_LIODN(CONFIG_SYS_FSL_PCIE_COMPAT, 4, 388), +	SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 1, 148), +	SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 2, 228), +	SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 3, 308), +	SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 4, 388),  	SET_DMA_LIODN(1, 147),  	SET_DMA_LIODN(2, 227), diff --git a/arch/powerpc/cpu/mpc8xxx/Makefile b/arch/powerpc/cpu/mpc8xxx/Makefile index 395fed16b..1d083bf35 100644 --- a/arch/powerpc/cpu/mpc8xxx/Makefile +++ b/arch/powerpc/cpu/mpc8xxx/Makefile @@ -31,3 +31,9 @@ obj-$(CONFIG_SYS_SRIO) += srio.o  obj-$(CONFIG_FSL_LAW) += law.o  endif + +ifdef CONFIG_SPL_BUILD +obj-$(CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT) += ddr/ +else +obj-y += ddr/ +endif diff --git a/arch/powerpc/include/asm/config_mpc85xx.h b/arch/powerpc/include/asm/config_mpc85xx.h index 4cc12ee70..d4cd27dd0 100644 --- a/arch/powerpc/include/asm/config_mpc85xx.h +++ b/arch/powerpc/include/asm/config_mpc85xx.h @@ -674,7 +674,8 @@  #define CONFIG_NUM_DDR_CONTROLLERS	1  #endif -#elif defined(CONFIG_PPC_T1040) +#elif defined(CONFIG_PPC_T1040) || defined(CONFIG_PPC_T1042) ||\ +defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)  #define CONFIG_E5500  #define CONFIG_FSL_CORENET		/* Freescale CoreNet platform */  #define CONFIG_SYS_FSL_QORIQ_CHASSIS2	/* Freescale Chassis generation 2 */ diff --git a/arch/powerpc/include/asm/immap_83xx.h b/arch/powerpc/include/asm/immap_83xx.h index 3c86ff66f..289f7cac5 100644 --- a/arch/powerpc/include/asm/immap_83xx.h +++ b/arch/powerpc/include/asm/immap_83xx.h @@ -763,6 +763,7 @@ typedef struct immap {  	u8			res7[0xC0000];  } immap_t; +#ifndef	CONFIG_MPC834x  #ifdef CONFIG_HAS_FSL_MPH_USB  #define CONFIG_SYS_MPC83xx_USB1_OFFSET  0x22000	/* use the MPH controller */  #define CONFIG_SYS_MPC83xx_USB2_OFFSET	0 @@ -770,6 +771,10 @@ typedef struct immap {  #define CONFIG_SYS_MPC83xx_USB1_OFFSET	0  #define CONFIG_SYS_MPC83xx_USB2_OFFSET  0x23000	/* use the DR controller */  #endif +#else +#define CONFIG_SYS_MPC83xx_USB1_OFFSET	0x22000 +#define CONFIG_SYS_MPC83xx_USB2_OFFSET  0x23000 +#endif  #elif defined(CONFIG_MPC8313)  typedef struct immap { diff --git a/arch/powerpc/include/asm/immap_85xx.h b/arch/powerpc/include/asm/immap_85xx.h index 060e0d769..631261857 100644 --- a/arch/powerpc/include/asm/immap_85xx.h +++ b/arch/powerpc/include/asm/immap_85xx.h @@ -282,7 +282,9 @@ typedef struct ccsr_pcix {  	u32	int_ack;	/* PCIX IRQ Acknowledge */  	u8	res000c[52];  	u32	liodn_base;	/* PCIX LIODN base register */ -	u8	res0044[3004]; +	u8	res0044[2996]; +	u32	ipver1;		/* PCIX IP block revision register 1 */ +	u32	ipver2;		/* PCIX IP block revision register 2 */  	u32	potar0;		/* PCIX Outbound Transaction Addr 0 */  	u32	potear0;	/* PCIX Outbound Translation Extended Addr 0 */  	u32	powbar0;	/* PCIX Outbound Window Base Addr 0 */ @@ -1847,7 +1849,8 @@ typedef struct ccsr_gur {  #define FSL_CORENET2_RCWSR4_SRDS2_PRTCL	0x00ff0000  #define FSL_CORENET2_RCWSR4_SRDS2_PRTCL_SHIFT	16  #define FSL_CORENET_RCWSR6_BOOT_LOC	0x0f800000 -#elif defined(CONFIG_PPC_T1040) +#elif defined(CONFIG_PPC_T1040) || defined(CONFIG_PPC_T1042) ||\ +defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)  #define FSL_CORENET2_RCWSR4_SRDS1_PRTCL	0xff000000  #define FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT	24  #define FSL_CORENET2_RCWSR4_SRDS2_PRTCL	0x00fe0000 diff --git a/arch/sparc/cpu/leon3/start.S b/arch/sparc/cpu/leon3/start.S index bbc1b3476..cf897f687 100644 --- a/arch/sparc/cpu/leon3/start.S +++ b/arch/sparc/cpu/leon3/start.S @@ -1,33 +1,41 @@ -#include <config.h> - -TRAP ta 0; nop; nop; nop; - -/* Software trap. Treat as BAD_TRAP for the time being... */ -#define SOFT_TRAP TRAP(_hwerr) - -#define PSR_INIT   0x1FC0	/* Disable traps, set s and ps */ -#define WIM_INIT   2 - -/* All traps low-level code here must end with this macro. */ -#define RESTORE_ALL b ret_trap_entry; clr %l6; +/* This is where the SPARC/LEON3 starts + * Copyright (C) 2007, + * Daniel Hellstrom, daniel@gaisler.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * SPDX-License-Identifier:	GPL-2.0+ + */ -#define WRITE_PAUSE nop;nop;nop +#include <asm-offsets.h> +#include <config.h> +#include <asm/asmmacro.h> +#include <asm/winmacro.h> +#include <asm/psr.h> +#include <asm/stack.h> +#include <asm/leon.h> +#include <version.h> -WINDOWSIZE = (16 * 4) -ARGPUSHSIZE = (6 * 4) -ARGPUSH = (WINDOWSIZE + 4) -MINFRAME = (WINDOWSIZE + ARGPUSHSIZE + 4) +/* Entry for traps which jump to a programmer-specified trap handler.  */ +#define TRAPR(H)  \ +	wr	%g0, 0xfe0, %psr; \ +	mov	%g0, %tbr; \ +	ba	(H); \ +	mov	%g0, %wim; -/* Number of register windows */ -#ifndef CONFIG_SYS_SPARC_NWINDOWS -#error Must define number of SPARC register windows, default is 8 -#endif +#define TRAP(H) \ +	mov	%psr, %l0; \ +	ba	(H); \ +	nop; nop; -#define STACK_ALIGN	8 -#define SA(X)	(((X)+(STACK_ALIGN-1)) & ~(STACK_ALIGN-1)) +#define TRAPI(ilevel) \ +	mov	ilevel, %l7; \ +	mov	%psr, %l0; \ +	b	_irq_entry; \ +	mov	%wim, %l3 -	.section ".start", "ax" -	.globl	_starttate */ +/* Unexcpected trap will halt the processor by forcing it to error state */  #undef BAD_TRAP  #define BAD_TRAP ta 0; nop; nop; nop; |