mirror of
				https://source.denx.de/u-boot/u-boot.git
				synced 2025-11-04 02:11:25 +01:00 
			
		
		
		
	Add initial support for the Ingenic JZ47xx MIPS SoC. Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Signed-off-by: Paul Burton <paul.burton@imgtec.com> Signed-off-by: Marek Vasut <marek.vasut@gmail.com> Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com> Reviewed-by: Marek Vasut <marex@denx.de>
		
			
				
	
	
		
			99 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
// SPDX-License-Identifier: GPL-2.0+
 | 
						|
/*
 | 
						|
 *  Startup Code for MIPS32 XBURST CPU-core
 | 
						|
 *
 | 
						|
 *  Copyright (c) 2010 Xiangfu Liu <xiangfu@sharism.cc>
 | 
						|
 */
 | 
						|
 | 
						|
#include <config.h>
 | 
						|
#include <asm/regdef.h>
 | 
						|
#include <asm/mipsregs.h>
 | 
						|
#include <asm/addrspace.h>
 | 
						|
#include <asm/cacheops.h>
 | 
						|
#include <asm/cache.h>
 | 
						|
#include <mach/jz4780.h>
 | 
						|
 | 
						|
	.set noreorder
 | 
						|
 | 
						|
	.globl _start
 | 
						|
	.text
 | 
						|
_start:
 | 
						|
#ifdef CONFIG_SPL_BUILD
 | 
						|
 | 
						|
	/* magic value ("MSPL") */
 | 
						|
	.word 0x4d53504c
 | 
						|
 | 
						|
	/* Invalidate BTB */
 | 
						|
	mfc0	t0, CP0_CONFIG, 7
 | 
						|
	nop
 | 
						|
	ori	t0, 2
 | 
						|
	mtc0	t0, CP0_CONFIG, 7
 | 
						|
	nop
 | 
						|
 | 
						|
	/*
 | 
						|
	 * CU0=UM=EXL=IE=0, BEV=ERL=1, IP2~7=1
 | 
						|
	 */
 | 
						|
	li	t0, 0x0040FC04
 | 
						|
	mtc0	t0, CP0_STATUS
 | 
						|
 | 
						|
	/* CAUSE register */
 | 
						|
	/* IV=1, use the specical interrupt vector (0x200) */
 | 
						|
	li	t1, 0x00800000
 | 
						|
	mtc0	t1, CP0_CAUSE
 | 
						|
 | 
						|
#ifdef CONFIG_SOC_JZ4780
 | 
						|
	/* enable bridge radical mode */
 | 
						|
	la	t0, CPM_BASE
 | 
						|
	lw	t1, 0x24(t0)
 | 
						|
	ori	t1, t1, 0x22
 | 
						|
	sw	t1, 0x24(t0)
 | 
						|
#endif
 | 
						|
 | 
						|
	/* Set up stack */
 | 
						|
	li	sp, CONFIG_SPL_STACK
 | 
						|
 | 
						|
	b		board_init_f
 | 
						|
	 nop
 | 
						|
 | 
						|
#ifdef CONFIG_SOC_JZ4780
 | 
						|
 | 
						|
	.globl enable_caches
 | 
						|
	.ent enable_caches
 | 
						|
enable_caches:
 | 
						|
	mtc0	zero, CP0_TAGLO
 | 
						|
	mtc0	zero, CP0_TAGHI
 | 
						|
 | 
						|
	li	t0, KSEG0
 | 
						|
	addu	t1, t0, CONFIG_SYS_DCACHE_SIZE
 | 
						|
1:
 | 
						|
	cache	INDEX_STORE_TAG_D, 0(t0)
 | 
						|
	bne	t0, t1, 1b
 | 
						|
	addiu	t0, t0, CONFIG_SYS_CACHELINE_SIZE
 | 
						|
 | 
						|
	li	t0, KSEG0
 | 
						|
	addu	t1, t0, CONFIG_SYS_ICACHE_SIZE
 | 
						|
2:
 | 
						|
	cache	INDEX_STORE_TAG_I, 0(t0)
 | 
						|
	bne	t0, t1, 2b
 | 
						|
	addiu	t0, t0, CONFIG_SYS_CACHELINE_SIZE
 | 
						|
 | 
						|
	/* Invalidate BTB */
 | 
						|
	mfc0	t0, CP0_CONFIG, 7
 | 
						|
	nop
 | 
						|
	ori	t0, 2
 | 
						|
	mtc0	t0, CP0_CONFIG, 7
 | 
						|
	nop
 | 
						|
 | 
						|
	/* Enable caches */
 | 
						|
	li	t0, CONF_CM_CACHABLE_NONCOHERENT
 | 
						|
	mtc0	t0, CP0_CONFIG
 | 
						|
	nop
 | 
						|
 | 
						|
	jr	ra
 | 
						|
	 nop
 | 
						|
 | 
						|
	.end enable_caches
 | 
						|
 | 
						|
#endif /* CONFIG_SOC_JZ4780 */
 | 
						|
#endif /* !CONFIG_SPL_BUILD */
 |