mirror of
				https://source.denx.de/u-boot/u-boot.git
				synced 2025-10-31 08:21:36 +01:00 
			
		
		
		
	Merge branch 'master' of git://git.denx.de/u-boot-mpc85xx
This commit is contained in:
		
						commit
						dd9958a3f4
					
				| @ -252,39 +252,36 @@ l2_disabled: | |||||||
| 	lis	r1,CONFIG_SYS_MONITOR_BASE@h
 | 	lis	r1,CONFIG_SYS_MONITOR_BASE@h
 | ||||||
| 	mtspr	IVPR,r1 | 	mtspr	IVPR,r1 | ||||||
| 
 | 
 | ||||||
| 	lis	r3,(CONFIG_SYS_MONITOR_BASE & 0xffff)@h
 | 	li	r4,CriticalInput@l
 | ||||||
| 	ori	r3,r3,(CONFIG_SYS_MONITOR_BASE & 0xffff)@l
 |  | ||||||
| 
 |  | ||||||
| 	addi	r4,r3,CriticalInput - _start + _START_OFFSET |  | ||||||
| 	mtspr	IVOR0,r4	/* 0: Critical input */ | 	mtspr	IVOR0,r4	/* 0: Critical input */ | ||||||
| 	addi	r4,r3,MachineCheck - _start + _START_OFFSET | 	li	r4,MachineCheck@l
 | ||||||
| 	mtspr	IVOR1,r4	/* 1: Machine check */ | 	mtspr	IVOR1,r4	/* 1: Machine check */ | ||||||
| 	addi	r4,r3,DataStorage - _start + _START_OFFSET | 	li	r4,DataStorage@l
 | ||||||
| 	mtspr	IVOR2,r4	/* 2: Data storage */ | 	mtspr	IVOR2,r4	/* 2: Data storage */ | ||||||
| 	addi	r4,r3,InstStorage - _start + _START_OFFSET | 	li	r4,InstStorage@l
 | ||||||
| 	mtspr	IVOR3,r4	/* 3: Instruction storage */ | 	mtspr	IVOR3,r4	/* 3: Instruction storage */ | ||||||
| 	addi	r4,r3,ExtInterrupt - _start + _START_OFFSET | 	li	r4,ExtInterrupt@l
 | ||||||
| 	mtspr	IVOR4,r4	/* 4: External interrupt */ | 	mtspr	IVOR4,r4	/* 4: External interrupt */ | ||||||
| 	addi	r4,r3,Alignment - _start + _START_OFFSET | 	li	r4,Alignment@l
 | ||||||
| 	mtspr	IVOR5,r4	/* 5: Alignment */ | 	mtspr	IVOR5,r4	/* 5: Alignment */ | ||||||
| 	addi	r4,r3,ProgramCheck - _start + _START_OFFSET | 	li	r4,ProgramCheck@l
 | ||||||
| 	mtspr	IVOR6,r4	/* 6: Program check */ | 	mtspr	IVOR6,r4	/* 6: Program check */ | ||||||
| 	addi	r4,r3,FPUnavailable - _start + _START_OFFSET | 	li	r4,FPUnavailable@l
 | ||||||
| 	mtspr	IVOR7,r4	/* 7: floating point unavailable */ | 	mtspr	IVOR7,r4	/* 7: floating point unavailable */ | ||||||
| 	addi	r4,r3,SystemCall - _start + _START_OFFSET | 	li	r4,SystemCall@l
 | ||||||
| 	mtspr	IVOR8,r4	/* 8: System call */ | 	mtspr	IVOR8,r4	/* 8: System call */ | ||||||
| 	/* 9: Auxiliary processor unavailable(unsupported) */ | 	/* 9: Auxiliary processor unavailable(unsupported) */ | ||||||
| 	addi	r4,r3,Decrementer - _start + _START_OFFSET | 	li	r4,Decrementer@l
 | ||||||
| 	mtspr	IVOR10,r4	/* 10: Decrementer */ | 	mtspr	IVOR10,r4	/* 10: Decrementer */ | ||||||
| 	addi	r4,r3,IntervalTimer - _start + _START_OFFSET | 	li	r4,IntervalTimer@l
 | ||||||
| 	mtspr	IVOR11,r4	/* 11: Interval timer */ | 	mtspr	IVOR11,r4	/* 11: Interval timer */ | ||||||
| 	addi	r4,r3,WatchdogTimer - _start + _START_OFFSET | 	li	r4,WatchdogTimer@l
 | ||||||
| 	mtspr	IVOR12,r4	/* 12: Watchdog timer */ | 	mtspr	IVOR12,r4	/* 12: Watchdog timer */ | ||||||
| 	addi	r4,r3,DataTLBError - _start + _START_OFFSET | 	li	r4,DataTLBError@l
 | ||||||
| 	mtspr	IVOR13,r4	/* 13: Data TLB error */ | 	mtspr	IVOR13,r4	/* 13: Data TLB error */ | ||||||
| 	addi	r4,r3,InstructionTLBError - _start + _START_OFFSET | 	li	r4,InstructionTLBError@l
 | ||||||
| 	mtspr	IVOR14,r4	/* 14: Instruction TLB error */ | 	mtspr	IVOR14,r4	/* 14: Instruction TLB error */ | ||||||
| 	addi	r4,r3,DebugBreakpoint - _start + _START_OFFSET | 	li	r4,DebugBreakpoint@l
 | ||||||
| 	mtspr	IVOR15,r4	/* 15: Debug */ | 	mtspr	IVOR15,r4	/* 15: Debug */ | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| @ -1121,7 +1118,7 @@ switch_as: | |||||||
| 	/*--------------------------------------------------------------*/ | 	/*--------------------------------------------------------------*/ | ||||||
| 	lis	r3,CONFIG_SYS_MONITOR_BASE@h
 | 	lis	r3,CONFIG_SYS_MONITOR_BASE@h
 | ||||||
| 	ori	r3,r3,CONFIG_SYS_MONITOR_BASE@l
 | 	ori	r3,r3,CONFIG_SYS_MONITOR_BASE@l
 | ||||||
| 	addi	r3,r3,_start_cont - _start + _START_OFFSET | 	addi	r3,r3,_start_cont - _start | ||||||
| 	mtlr	r3 | 	mtlr	r3 | ||||||
| 	blr | 	blr | ||||||
| #endif | #endif | ||||||
| @ -1165,7 +1162,6 @@ _start_cont: | |||||||
| 	/* NOTREACHED - board_init_f() does not return */ | 	/* NOTREACHED - board_init_f() does not return */ | ||||||
| 
 | 
 | ||||||
| #ifndef MINIMAL_SPL | #ifndef MINIMAL_SPL | ||||||
| 	. = EXC_OFF_SYS_RESET |  | ||||||
| 	.globl	_start_of_vectors
 | 	.globl	_start_of_vectors
 | ||||||
| _start_of_vectors: | _start_of_vectors: | ||||||
| 
 | 
 | ||||||
| @ -1185,7 +1181,6 @@ _start_of_vectors: | |||||||
| 	STD_EXCEPTION(0x0500, ExtInterrupt, ExtIntException) | 	STD_EXCEPTION(0x0500, ExtInterrupt, ExtIntException) | ||||||
| 
 | 
 | ||||||
| /* Alignment exception. */ | /* Alignment exception. */ | ||||||
| 	. = 0x0600 |  | ||||||
| Alignment: | Alignment: | ||||||
| 	EXCEPTION_PROLOG(SRR0, SRR1) | 	EXCEPTION_PROLOG(SRR0, SRR1) | ||||||
| 	mfspr	r4,DAR | 	mfspr	r4,DAR | ||||||
| @ -1193,87 +1188,20 @@ Alignment: | |||||||
| 	mfspr	r5,DSISR | 	mfspr	r5,DSISR | ||||||
| 	stw	r5,_DSISR(r21) | 	stw	r5,_DSISR(r21) | ||||||
| 	addi	r3,r1,STACK_FRAME_OVERHEAD | 	addi	r3,r1,STACK_FRAME_OVERHEAD | ||||||
| 	EXC_XFER_TEMPLATE(Alignment, AlignmentException, MSR_KERNEL, COPY_EE) | 	EXC_XFER_TEMPLATE(0x600, Alignment, AlignmentException, | ||||||
|  | 		MSR_KERNEL, COPY_EE) | ||||||
| 
 | 
 | ||||||
| /* Program check exception */ | /* Program check exception */ | ||||||
| 	. = 0x0700 |  | ||||||
| ProgramCheck: | ProgramCheck: | ||||||
| 	EXCEPTION_PROLOG(SRR0, SRR1) | 	EXCEPTION_PROLOG(SRR0, SRR1) | ||||||
| 	addi	r3,r1,STACK_FRAME_OVERHEAD | 	addi	r3,r1,STACK_FRAME_OVERHEAD | ||||||
| 	EXC_XFER_TEMPLATE(ProgramCheck, ProgramCheckException, | 	EXC_XFER_TEMPLATE(0x700, ProgramCheck, ProgramCheckException, | ||||||
| 		MSR_KERNEL, COPY_EE) | 		MSR_KERNEL, COPY_EE) | ||||||
| 
 | 
 | ||||||
| 	/* No FPU on MPC85xx.  This exception is not supposed to happen. | 	/* No FPU on MPC85xx.  This exception is not supposed to happen. | ||||||
| 	*/ | 	*/ | ||||||
| 	STD_EXCEPTION(0x0800, FPUnavailable, UnknownException) | 	STD_EXCEPTION(0x0800, FPUnavailable, UnknownException) | ||||||
| 
 | 	STD_EXCEPTION(0x0900, SystemCall, UnknownException) | ||||||
| 	. = 0x0900 |  | ||||||
| /* |  | ||||||
|  * r0 - SYSCALL number |  | ||||||
|  * r3-... arguments |  | ||||||
|  */ |  | ||||||
| SystemCall: |  | ||||||
| 	addis	r11,r0,0	/* get functions table addr */ |  | ||||||
| 	ori	r11,r11,0	/* Note: this code is patched in trap_init */ |  | ||||||
| 	addis	r12,r0,0	/* get number of functions */ |  | ||||||
| 	ori	r12,r12,0 |  | ||||||
| 
 |  | ||||||
| 	cmplw	0,r0,r12 |  | ||||||
| 	bge	1f |  | ||||||
| 
 |  | ||||||
| 	rlwinm	r0,r0,2,0,31	/* fn_addr = fn_tbl[r0] */ |  | ||||||
| 	add	r11,r11,r0 |  | ||||||
| 	lwz	r11,0(r11) |  | ||||||
| 
 |  | ||||||
| 	li	r20,0xd00-4	/* Get stack pointer */ |  | ||||||
| 	lwz	r12,0(r20) |  | ||||||
| 	subi	r12,r12,12	/* Adjust stack pointer */ |  | ||||||
| 	li	r0,0xc00+_end_back-SystemCall |  | ||||||
| 	cmplw	0,r0,r12	/* Check stack overflow */ |  | ||||||
| 	bgt	1f |  | ||||||
| 	stw	r12,0(r20) |  | ||||||
| 
 |  | ||||||
| 	mflr	r0 |  | ||||||
| 	stw	r0,0(r12) |  | ||||||
| 	mfspr	r0,SRR0 |  | ||||||
| 	stw	r0,4(r12) |  | ||||||
| 	mfspr	r0,SRR1 |  | ||||||
| 	stw	r0,8(r12) |  | ||||||
| 
 |  | ||||||
| 	li	r12,0xc00+_back-SystemCall |  | ||||||
| 	mtlr	r12 |  | ||||||
| 	mtspr	SRR0,r11 |  | ||||||
| 
 |  | ||||||
| 1:	SYNC |  | ||||||
| 	rfi |  | ||||||
| _back: |  | ||||||
| 
 |  | ||||||
| 	mfmsr	r11			/* Disable interrupts */ |  | ||||||
| 	li	r12,0 |  | ||||||
| 	ori	r12,r12,MSR_EE |  | ||||||
| 	andc	r11,r11,r12 |  | ||||||
| 	SYNC				/* Some chip revs need this... */ |  | ||||||
| 	mtmsr	r11 |  | ||||||
| 	SYNC |  | ||||||
| 
 |  | ||||||
| 	li	r12,0xd00-4		/* restore regs */ |  | ||||||
| 	lwz	r12,0(r12) |  | ||||||
| 
 |  | ||||||
| 	lwz	r11,0(r12) |  | ||||||
| 	mtlr	r11 |  | ||||||
| 	lwz	r11,4(r12) |  | ||||||
| 	mtspr	SRR0,r11 |  | ||||||
| 	lwz	r11,8(r12) |  | ||||||
| 	mtspr	SRR1,r11 |  | ||||||
| 
 |  | ||||||
| 	addi	r12,r12,12		/* Adjust stack pointer */ |  | ||||||
| 	li	r20,0xd00-4 |  | ||||||
| 	stw	r12,0(r20) |  | ||||||
| 
 |  | ||||||
| 	SYNC |  | ||||||
| 	rfi |  | ||||||
| _end_back: |  | ||||||
| 
 |  | ||||||
| 	STD_EXCEPTION(0x0a00, Decrementer, timer_interrupt) | 	STD_EXCEPTION(0x0a00, Decrementer, timer_interrupt) | ||||||
| 	STD_EXCEPTION(0x0b00, IntervalTimer, UnknownException) | 	STD_EXCEPTION(0x0b00, IntervalTimer, UnknownException) | ||||||
| 	STD_EXCEPTION(0x0c00, WatchdogTimer, UnknownException) | 	STD_EXCEPTION(0x0c00, WatchdogTimer, UnknownException) | ||||||
| @ -1293,32 +1221,22 @@ _end_of_vectors: | |||||||
|  * This code finishes saving the registers to the exception frame |  * This code finishes saving the registers to the exception frame | ||||||
|  * and jumps to the appropriate handler for the exception. |  * and jumps to the appropriate handler for the exception. | ||||||
|  * Register r21 is pointer into trap frame, r1 has new stack pointer. |  * Register r21 is pointer into trap frame, r1 has new stack pointer. | ||||||
|  |  * r23 is the address of the handler. | ||||||
|  */ |  */ | ||||||
| 	.globl	transfer_to_handler
 | 	.globl	transfer_to_handler
 | ||||||
| transfer_to_handler: | transfer_to_handler: | ||||||
| 	stw	r22,_NIP(r21) |  | ||||||
| 	lis	r22,MSR_POW@h
 |  | ||||||
| 	andc	r23,r23,r22 |  | ||||||
| 	stw	r23,_MSR(r21) |  | ||||||
| 	SAVE_GPR(7, r21) | 	SAVE_GPR(7, r21) | ||||||
| 	SAVE_4GPRS(8, r21) | 	SAVE_4GPRS(8, r21) | ||||||
| 	SAVE_8GPRS(12, r21) | 	SAVE_8GPRS(12, r21) | ||||||
| 	SAVE_8GPRS(24, r21) | 	SAVE_8GPRS(24, r21) | ||||||
| 
 | 
 | ||||||
| 	mflr	r23 |  | ||||||
| 	andi.	r24,r23,0x3f00		/* get vector offset */ |  | ||||||
| 	stw	r24,TRAP(r21) |  | ||||||
| 	li	r22,0 | 	li	r22,0 | ||||||
| 	stw	r22,RESULT(r21) | 	stw	r22,RESULT(r21) | ||||||
| 	mtspr	SPRG2,r22		/* r1 is now kernel sp */ | 	mtspr	SPRG2,r22		/* r1 is now kernel sp */ | ||||||
| 
 | 
 | ||||||
| 	lwz	r24,0(r23)		/* virtual address of handler */ | 	mtctr	r23			/* virtual address of handler */ | ||||||
| 	lwz	r23,4(r23)		/* where to go when done */ | 	mtmsr	r20 | ||||||
| 	mtspr	SRR0,r24 | 	bctrl | ||||||
| 	mtspr	SRR1,r20 |  | ||||||
| 	mtlr	r23 |  | ||||||
| 	SYNC |  | ||||||
| 	rfi				/* jump to handler, enable MMU */ |  | ||||||
| 
 | 
 | ||||||
| int_return: | int_return: | ||||||
| 	mfmsr	r28		/* Disable interrupts */ | 	mfmsr	r28		/* Disable interrupts */ | ||||||
| @ -1350,66 +1268,6 @@ int_return: | |||||||
| 	SYNC | 	SYNC | ||||||
| 	rfi | 	rfi | ||||||
| 
 | 
 | ||||||
| crit_return: |  | ||||||
| 	mfmsr	r28		/* Disable interrupts */ |  | ||||||
| 	li	r4,0 |  | ||||||
| 	ori	r4,r4,MSR_EE |  | ||||||
| 	andc	r28,r28,r4 |  | ||||||
| 	SYNC			/* Some chip revs need this... */ |  | ||||||
| 	mtmsr	r28 |  | ||||||
| 	SYNC |  | ||||||
| 	lwz	r2,_CTR(r1) |  | ||||||
| 	lwz	r0,_LINK(r1) |  | ||||||
| 	mtctr	r2 |  | ||||||
| 	mtlr	r0 |  | ||||||
| 	lwz	r2,_XER(r1) |  | ||||||
| 	lwz	r0,_CCR(r1) |  | ||||||
| 	mtspr	XER,r2 |  | ||||||
| 	mtcrf	0xFF,r0 |  | ||||||
| 	REST_10GPRS(3, r1) |  | ||||||
| 	REST_10GPRS(13, r1) |  | ||||||
| 	REST_8GPRS(23, r1) |  | ||||||
| 	REST_GPR(31, r1) |  | ||||||
| 	lwz	r2,_NIP(r1)	/* Restore environment */ |  | ||||||
| 	lwz	r0,_MSR(r1) |  | ||||||
| 	mtspr	SPRN_CSRR0,r2 |  | ||||||
| 	mtspr	SPRN_CSRR1,r0 |  | ||||||
| 	lwz	r0,GPR0(r1) |  | ||||||
| 	lwz	r2,GPR2(r1) |  | ||||||
| 	lwz	r1,GPR1(r1) |  | ||||||
| 	SYNC |  | ||||||
| 	rfci |  | ||||||
| 
 |  | ||||||
| mck_return: |  | ||||||
| 	mfmsr	r28		/* Disable interrupts */ |  | ||||||
| 	li	r4,0 |  | ||||||
| 	ori	r4,r4,MSR_EE |  | ||||||
| 	andc	r28,r28,r4 |  | ||||||
| 	SYNC			/* Some chip revs need this... */ |  | ||||||
| 	mtmsr	r28 |  | ||||||
| 	SYNC |  | ||||||
| 	lwz	r2,_CTR(r1) |  | ||||||
| 	lwz	r0,_LINK(r1) |  | ||||||
| 	mtctr	r2 |  | ||||||
| 	mtlr	r0 |  | ||||||
| 	lwz	r2,_XER(r1) |  | ||||||
| 	lwz	r0,_CCR(r1) |  | ||||||
| 	mtspr	XER,r2 |  | ||||||
| 	mtcrf	0xFF,r0 |  | ||||||
| 	REST_10GPRS(3, r1) |  | ||||||
| 	REST_10GPRS(13, r1) |  | ||||||
| 	REST_8GPRS(23, r1) |  | ||||||
| 	REST_GPR(31, r1) |  | ||||||
| 	lwz	r2,_NIP(r1)	/* Restore environment */ |  | ||||||
| 	lwz	r0,_MSR(r1) |  | ||||||
| 	mtspr	SPRN_MCSRR0,r2 |  | ||||||
| 	mtspr	SPRN_MCSRR1,r0 |  | ||||||
| 	lwz	r0,GPR0(r1) |  | ||||||
| 	lwz	r2,GPR2(r1) |  | ||||||
| 	lwz	r1,GPR1(r1) |  | ||||||
| 	SYNC |  | ||||||
| 	rfmci |  | ||||||
| 
 |  | ||||||
| /* Cache functions. | /* Cache functions. | ||||||
| */ | */ | ||||||
| .globl flush_icache
 | .globl flush_icache
 | ||||||
| @ -1494,11 +1352,6 @@ dcache_status: | |||||||
| 	andi.	r3,r3,L1CSR0_DCE | 	andi.	r3,r3,L1CSR0_DCE | ||||||
| 	blr | 	blr | ||||||
| 
 | 
 | ||||||
| 	.globl get_pir
 |  | ||||||
| get_pir: |  | ||||||
| 	mfspr	r3,PIR |  | ||||||
| 	blr |  | ||||||
| 
 |  | ||||||
| 	.globl get_pvr
 | 	.globl get_pvr
 | ||||||
| get_pvr: | get_pvr: | ||||||
| 	mfspr	r3,PVR | 	mfspr	r3,PVR | ||||||
| @ -1509,11 +1362,6 @@ get_svr: | |||||||
| 	mfspr	r3,SVR | 	mfspr	r3,SVR | ||||||
| 	blr | 	blr | ||||||
| 
 | 
 | ||||||
| 	.globl wr_tcr
 |  | ||||||
| wr_tcr: |  | ||||||
| 	mtspr	TCR,r3 |  | ||||||
| 	blr |  | ||||||
| 
 |  | ||||||
| /*------------------------------------------------------------------------------- */ | /*------------------------------------------------------------------------------- */ | ||||||
| /* Function:	 in8 */ | /* Function:	 in8 */ | ||||||
| /* Description:	 Input 8 bits */ | /* Description:	 Input 8 bits */ | ||||||
| @ -1728,7 +1576,7 @@ relocate_code: | |||||||
|  * initialization, now running from RAM. |  * initialization, now running from RAM. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| 	addi	r0,r10,in_ram - _start + _START_OFFSET | 	addi	r0,r10,in_ram - _start | ||||||
| 
 | 
 | ||||||
| 	/* | 	/* | ||||||
| 	 * As IVPR is going to point RAM address, | 	 * As IVPR is going to point RAM address, | ||||||
| @ -1816,89 +1664,41 @@ clear_bss: | |||||||
| 	 */ | 	 */ | ||||||
| 	.globl	trap_init
 | 	.globl	trap_init
 | ||||||
| trap_init: | trap_init: | ||||||
| 	mflr	r4			/* save link register		*/ | 	/* Update IVORs as per relocation */ | ||||||
| 	GET_GOT | 	mtspr	IVPR,r3 | ||||||
| 	lwz	r7,GOT(_start_of_vectors) |  | ||||||
| 	lwz	r8,GOT(_end_of_vectors) |  | ||||||
| 
 | 
 | ||||||
| 	li	r9,0x100		/* reset vector always at 0x100 */ | 	li	r4,CriticalInput@l
 | ||||||
| 
 | 	mtspr	IVOR0,r4	/* 0: Critical input */ | ||||||
| 	cmplw	0,r7,r8 | 	li	r4,MachineCheck@l
 | ||||||
| 	bgelr				/* return if r7>=r8 - just in case */ | 	mtspr	IVOR1,r4	/* 1: Machine check */ | ||||||
| 1: | 	li	r4,DataStorage@l
 | ||||||
| 	lwz	r0,0(r7) | 	mtspr	IVOR2,r4	/* 2: Data storage */ | ||||||
| 	stw	r0,0(r9) | 	li	r4,InstStorage@l
 | ||||||
| 	addi	r7,r7,4 | 	mtspr	IVOR3,r4	/* 3: Instruction storage */ | ||||||
| 	addi	r9,r9,4 | 	li	r4,ExtInterrupt@l
 | ||||||
| 	cmplw	0,r7,r8 | 	mtspr	IVOR4,r4	/* 4: External interrupt */ | ||||||
| 	bne	1b | 	li	r4,Alignment@l
 | ||||||
| 
 | 	mtspr	IVOR5,r4	/* 5: Alignment */ | ||||||
| 	/* | 	li	r4,ProgramCheck@l
 | ||||||
| 	 * relocate `hdlr' and `int_return' entries | 	mtspr	IVOR6,r4	/* 6: Program check */ | ||||||
| 	 */ | 	li	r4,FPUnavailable@l
 | ||||||
| 	li	r7,.L_CriticalInput - _start + _START_OFFSET | 	mtspr	IVOR7,r4	/* 7: floating point unavailable */ | ||||||
| 	bl	trap_reloc | 	li	r4,SystemCall@l
 | ||||||
| 	li	r7,.L_MachineCheck - _start + _START_OFFSET | 	mtspr	IVOR8,r4	/* 8: System call */ | ||||||
| 	bl	trap_reloc |  | ||||||
| 	li	r7,.L_DataStorage - _start + _START_OFFSET |  | ||||||
| 	bl	trap_reloc |  | ||||||
| 	li	r7,.L_InstStorage - _start + _START_OFFSET |  | ||||||
| 	bl	trap_reloc |  | ||||||
| 	li	r7,.L_ExtInterrupt - _start + _START_OFFSET |  | ||||||
| 	bl	trap_reloc |  | ||||||
| 	li	r7,.L_Alignment - _start + _START_OFFSET |  | ||||||
| 	bl	trap_reloc |  | ||||||
| 	li	r7,.L_ProgramCheck - _start + _START_OFFSET |  | ||||||
| 	bl	trap_reloc |  | ||||||
| 	li	r7,.L_FPUnavailable - _start + _START_OFFSET |  | ||||||
| 	bl	trap_reloc |  | ||||||
| 	li	r7,.L_Decrementer - _start + _START_OFFSET |  | ||||||
| 	bl	trap_reloc |  | ||||||
| 	li	r7,.L_IntervalTimer - _start + _START_OFFSET |  | ||||||
| 	li	r8,_end_of_vectors - _start + _START_OFFSET |  | ||||||
| 2: |  | ||||||
| 	bl	trap_reloc |  | ||||||
| 	addi	r7,r7,0x100		/* next exception vector	*/ |  | ||||||
| 	cmplw	0,r7,r8 |  | ||||||
| 	blt	2b |  | ||||||
| 
 |  | ||||||
| 	/* Update IVORs as per relocated vector table address */ |  | ||||||
| 	li	r7,0x0100 |  | ||||||
| 	mtspr	IVOR0,r7	/* 0: Critical input */ |  | ||||||
| 	li	r7,0x0200 |  | ||||||
| 	mtspr	IVOR1,r7	/* 1: Machine check */ |  | ||||||
| 	li	r7,0x0300 |  | ||||||
| 	mtspr	IVOR2,r7	/* 2: Data storage */ |  | ||||||
| 	li	r7,0x0400 |  | ||||||
| 	mtspr	IVOR3,r7	/* 3: Instruction storage */ |  | ||||||
| 	li	r7,0x0500 |  | ||||||
| 	mtspr	IVOR4,r7	/* 4: External interrupt */ |  | ||||||
| 	li	r7,0x0600 |  | ||||||
| 	mtspr	IVOR5,r7	/* 5: Alignment */ |  | ||||||
| 	li	r7,0x0700 |  | ||||||
| 	mtspr	IVOR6,r7	/* 6: Program check */ |  | ||||||
| 	li	r7,0x0800 |  | ||||||
| 	mtspr	IVOR7,r7	/* 7: floating point unavailable */ |  | ||||||
| 	li	r7,0x0900 |  | ||||||
| 	mtspr	IVOR8,r7	/* 8: System call */ |  | ||||||
| 	/* 9: Auxiliary processor unavailable(unsupported) */ | 	/* 9: Auxiliary processor unavailable(unsupported) */ | ||||||
| 	li	r7,0x0a00 | 	li	r4,Decrementer@l
 | ||||||
| 	mtspr	IVOR10,r7	/* 10: Decrementer */ | 	mtspr	IVOR10,r4	/* 10: Decrementer */ | ||||||
| 	li	r7,0x0b00 | 	li	r4,IntervalTimer@l
 | ||||||
| 	mtspr	IVOR11,r7	/* 11: Interval timer */ | 	mtspr	IVOR11,r4	/* 11: Interval timer */ | ||||||
| 	li	r7,0x0c00 | 	li	r4,WatchdogTimer@l
 | ||||||
| 	mtspr	IVOR12,r7	/* 12: Watchdog timer */ | 	mtspr	IVOR12,r4	/* 12: Watchdog timer */ | ||||||
| 	li	r7,0x0d00 | 	li	r4,DataTLBError@l
 | ||||||
| 	mtspr	IVOR13,r7	/* 13: Data TLB error */ | 	mtspr	IVOR13,r4	/* 13: Data TLB error */ | ||||||
| 	li	r7,0x0e00 | 	li	r4,InstructionTLBError@l
 | ||||||
| 	mtspr	IVOR14,r7	/* 14: Instruction TLB error */ | 	mtspr	IVOR14,r4	/* 14: Instruction TLB error */ | ||||||
| 	li	r7,0x0f00 | 	li	r4,DebugBreakpoint@l
 | ||||||
| 	mtspr	IVOR15,r7	/* 15: Debug */ | 	mtspr	IVOR15,r4	/* 15: Debug */ | ||||||
| 
 | 
 | ||||||
| 	lis	r7,0x0 |  | ||||||
| 	mtspr	IVPR,r7 |  | ||||||
| 
 |  | ||||||
| 	mtlr	r4			/* restore link register	*/ |  | ||||||
| 	blr | 	blr | ||||||
| 
 | 
 | ||||||
| .globl unlock_ram_in_cache
 | .globl unlock_ram_in_cache
 | ||||||
|  | |||||||
| @ -45,7 +45,7 @@ static inline bool has_erratum_a007186(void) | |||||||
| 		return IS_SVR_REV(svr, 2, 0); | 		return IS_SVR_REV(svr, 2, 0); | ||||||
| 	case SVR_T2081: | 	case SVR_T2081: | ||||||
| 	case SVR_T2080: | 	case SVR_T2080: | ||||||
| 		return IS_SVR_REV(svr, 1, 0); | 		return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 1, 1); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return false; | 	return false; | ||||||
|  | |||||||
| @ -32,12 +32,12 @@ static const struct board_specific_parameters udimm0[] = { | |||||||
| 	{2,  1500, 2, 5,     6, 0x07070809, 0x0a0b0b09}, | 	{2,  1500, 2, 5,     6, 0x07070809, 0x0a0b0b09}, | ||||||
| 	{2,  1600, 2, 5,     8, 0x0808070b, 0x0c0d0e0a}, | 	{2,  1600, 2, 5,     8, 0x0808070b, 0x0c0d0e0a}, | ||||||
| 	{2,  1700, 2, 4,     7, 0x080a0a0c, 0x0c0d0e0a}, | 	{2,  1700, 2, 4,     7, 0x080a0a0c, 0x0c0d0e0a}, | ||||||
| 	{2,  1900, 2, 5,     9, 0x0a0b0c0e, 0x0f10120c}, | 	{2,  1900, 0, 5,     7, 0x0808080c, 0x0b0c0c09}, | ||||||
| 	{1,  1200, 2, 5,     7, 0x0808090a, 0x0b0c0c0a}, | 	{1,  1200, 2, 5,     7, 0x0808090a, 0x0b0c0c0a}, | ||||||
| 	{1,  1500, 2, 5,     6, 0x07070809, 0x0a0b0b09}, | 	{1,  1500, 2, 5,     6, 0x07070809, 0x0a0b0b09}, | ||||||
| 	{1,  1600, 2, 5,     8, 0x0808070b, 0x0c0d0e0a}, | 	{1,  1600, 2, 5,     8, 0x0808070b, 0x0c0d0e0a}, | ||||||
| 	{1,  1700, 2, 4,     7, 0x080a0a0c, 0x0c0d0e0a}, | 	{1,  1700, 2, 4,     7, 0x080a0a0c, 0x0c0d0e0a}, | ||||||
| 	{1,  1900, 2, 5,     9, 0x0a0b0c0e, 0x0f10120c}, | 	{1,  1900, 0, 5,     7, 0x0808080c, 0x0b0c0c09}, | ||||||
| 	{} | 	{} | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -19,6 +19,7 @@ | |||||||
| #include <fm_eth.h> | #include <fm_eth.h> | ||||||
| #include "t208xrdb.h" | #include "t208xrdb.h" | ||||||
| #include "cpld.h" | #include "cpld.h" | ||||||
|  | #include "../common/vid.h" | ||||||
| 
 | 
 | ||||||
| DECLARE_GLOBAL_DATA_PTR; | DECLARE_GLOBAL_DATA_PTR; | ||||||
| 
 | 
 | ||||||
| @ -85,6 +86,12 @@ int board_early_init_r(void) | |||||||
| 	setup_portals(); | 	setup_portals(); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | 	/*
 | ||||||
|  | 	 * Adjust core voltage according to voltage ID | ||||||
|  | 	 * This function changes I2C mux to channel 2. | ||||||
|  | 	 */ | ||||||
|  | 	if (adjust_vdd(0)) | ||||||
|  | 		printf("Warning: Adjusting core voltage failed.\n"); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1747,9 +1747,17 @@ static void set_ddr_sdram_clk_cntl(fsl_ddr_cfg_regs_t *ddr, | |||||||
| 					 const memctl_options_t *popts) | 					 const memctl_options_t *popts) | ||||||
| { | { | ||||||
| 	unsigned int clk_adjust;	/* Clock adjust */ | 	unsigned int clk_adjust;	/* Clock adjust */ | ||||||
|  | 	unsigned int ss_en = 0;		/* Source synchronous enable */ | ||||||
| 
 | 
 | ||||||
|  | #if defined(CONFIG_MPC8541) || defined(CONFIG_MPC8555) | ||||||
|  | 	/* Per FSL Application Note: AN2805 */ | ||||||
|  | 	ss_en = 1; | ||||||
|  | #endif | ||||||
| 	clk_adjust = popts->clk_adjust; | 	clk_adjust = popts->clk_adjust; | ||||||
| 	ddr->ddr_sdram_clk_cntl = (clk_adjust & 0xF) << 23; | 	ddr->ddr_sdram_clk_cntl = (0 | ||||||
|  | 				   | ((ss_en & 0x1) << 31) | ||||||
|  | 				   | ((clk_adjust & 0xF) << 23) | ||||||
|  | 				   ); | ||||||
| 	debug("FSLDDR: clk_cntl = 0x%08x\n", ddr->ddr_sdram_clk_cntl); | 	debug("FSLDDR: clk_cntl = 0x%08x\n", ddr->ddr_sdram_clk_cntl); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -482,7 +482,6 @@ int testdram(void); | |||||||
|     defined(CONFIG_8xx) |     defined(CONFIG_8xx) | ||||||
| uint	get_immr      (uint); | uint	get_immr      (uint); | ||||||
| #endif | #endif | ||||||
| uint	get_pir	      (void); |  | ||||||
| #if defined(CONFIG_MPC5xxx) | #if defined(CONFIG_MPC5xxx) | ||||||
| uint	get_svr       (void); | uint	get_svr       (void); | ||||||
| #endif | #endif | ||||||
|  | |||||||
| @ -255,7 +255,7 @@ extern unsigned long get_board_sys_clk(unsigned long dummy); | |||||||
| #define CONFIG_SYS_GBL_DATA_OFFSET	(CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE) | #define CONFIG_SYS_GBL_DATA_OFFSET	(CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE) | ||||||
| #define CONFIG_SYS_INIT_SP_OFFSET	CONFIG_SYS_GBL_DATA_OFFSET | #define CONFIG_SYS_INIT_SP_OFFSET	CONFIG_SYS_GBL_DATA_OFFSET | ||||||
| 
 | 
 | ||||||
| #define CONFIG_SYS_MONITOR_LEN		(256 * 1024)	/* Reserve 256 kB for Mon */ | #define CONFIG_SYS_MONITOR_LEN		(512 * 1024)	/* Reserve 512 kB for Mon */ | ||||||
| #define CONFIG_SYS_MALLOC_LEN		(1024 * 1024)	 /* Reserved for malloc */ | #define CONFIG_SYS_MALLOC_LEN		(1024 * 1024)	 /* Reserved for malloc */ | ||||||
| 
 | 
 | ||||||
| /* Serial Port */ | /* Serial Port */ | ||||||
| @ -602,7 +602,8 @@ extern unsigned long get_board_sys_clk(unsigned long dummy); | |||||||
|  */ |  */ | ||||||
| #ifndef CONFIG_SYS_RAMBOOT | #ifndef CONFIG_SYS_RAMBOOT | ||||||
|     #define CONFIG_ENV_IS_IN_FLASH	1 |     #define CONFIG_ENV_IS_IN_FLASH	1 | ||||||
|     #define CONFIG_ENV_ADDR		(CONFIG_SYS_MONITOR_BASE + 0x60000) |     #define CONFIG_ENV_ADDR		\ | ||||||
|  | 			(CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN) | ||||||
|     #define CONFIG_ENV_SECT_SIZE		0x10000	/* 64K(one sector) for env */ |     #define CONFIG_ENV_SECT_SIZE		0x10000	/* 64K(one sector) for env */ | ||||||
| #else | #else | ||||||
|     #define CONFIG_ENV_IS_NOWHERE	1	/* Store ENV in memory only */ |     #define CONFIG_ENV_IS_NOWHERE	1	/* Store ENV in memory only */ | ||||||
|  | |||||||
| @ -140,6 +140,11 @@ | |||||||
| #define CONFIG_MEM_INIT_VALUE		0xdeadbeef | #define CONFIG_MEM_INIT_VALUE		0xdeadbeef | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #define CONFIG_CMD_MEMTEST | ||||||
|  | #define CONFIG_SYS_MEMTEST_START	0x00200000 /* memtest works on */ | ||||||
|  | #define CONFIG_SYS_MEMTEST_END		0x00400000 | ||||||
|  | #define CONFIG_SYS_ALT_MEMTEST | ||||||
|  | 
 | ||||||
| #ifndef CONFIG_SYS_NO_FLASH | #ifndef CONFIG_SYS_NO_FLASH | ||||||
| #define CONFIG_FLASH_CFI_DRIVER | #define CONFIG_FLASH_CFI_DRIVER | ||||||
| #define CONFIG_SYS_FLASH_CFI | #define CONFIG_SYS_FLASH_CFI | ||||||
| @ -448,6 +453,17 @@ unsigned long get_board_ddr_clk(void); | |||||||
| #define I2C_MUX_PCA_ADDR_SEC2	0x76 /* I2C bus multiplexer,secondary 2 */ | #define I2C_MUX_PCA_ADDR_SEC2	0x76 /* I2C bus multiplexer,secondary 2 */ | ||||||
| #define I2C_MUX_CH_DEFAULT	0x8 | #define I2C_MUX_CH_DEFAULT	0x8 | ||||||
| 
 | 
 | ||||||
|  | #define I2C_MUX_CH_VOL_MONITOR	0xa | ||||||
|  | 
 | ||||||
|  | #define CONFIG_VID_FLS_ENV		"t208xrdb_vdd_mv" | ||||||
|  | #ifndef CONFIG_SPL_BUILD | ||||||
|  | #define CONFIG_VID | ||||||
|  | #endif | ||||||
|  | #define CONFIG_VOL_MONITOR_IR36021_SET | ||||||
|  | #define CONFIG_VOL_MONITOR_IR36021_READ | ||||||
|  | /* The lowest and highest voltage allowed for T208xRDB */ | ||||||
|  | #define VDD_MV_MIN			819 | ||||||
|  | #define VDD_MV_MAX			1212 | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * RapidIO |  * RapidIO | ||||||
| @ -646,8 +662,8 @@ unsigned long get_board_ddr_clk(void); | |||||||
| #ifdef CONFIG_SYS_DPAA_FMAN | #ifdef CONFIG_SYS_DPAA_FMAN | ||||||
| #define CONFIG_FMAN_ENET | #define CONFIG_FMAN_ENET | ||||||
| #define CONFIG_PHYLIB_10G | #define CONFIG_PHYLIB_10G | ||||||
|  | #define CONFIG_PHY_AQUANTIA | ||||||
| #define CONFIG_PHY_CORTINA | #define CONFIG_PHY_CORTINA | ||||||
| #define CONFIG_PHY_AQ1202 |  | ||||||
| #define CONFIG_PHY_REALTEK | #define CONFIG_PHY_REALTEK | ||||||
| #define CONFIG_CORTINA_FW_LENGTH	0x40000 | #define CONFIG_CORTINA_FW_LENGTH	0x40000 | ||||||
| #define RGMII_PHY1_ADDR		0x01  /* RealTek RTL8211E */ | #define RGMII_PHY1_ADDR		0x01  /* RealTek RTL8211E */ | ||||||
|  | |||||||
| @ -638,6 +638,7 @@ unsigned long get_board_ddr_clk(void); | |||||||
| #define CONFIG_PHYLIB_10G | #define CONFIG_PHYLIB_10G | ||||||
| #define CONFIG_PHY_VITESSE | #define CONFIG_PHY_VITESSE | ||||||
| #define CONFIG_PHY_CORTINA | #define CONFIG_PHY_CORTINA | ||||||
|  | #define CONFIG_SYS_CORTINA_FW_IN_NOR | ||||||
| #define CONFIG_CORTINA_FW_ADDR		0xefe00000 | #define CONFIG_CORTINA_FW_ADDR		0xefe00000 | ||||||
| #define CONFIG_CORTINA_FW_LENGTH	0x40000 | #define CONFIG_CORTINA_FW_LENGTH	0x40000 | ||||||
| #define CONFIG_PHY_TERANETICS | #define CONFIG_PHY_TERANETICS | ||||||
|  | |||||||
| @ -50,8 +50,14 @@ | |||||||
| /* Physical address should be a function call */ | /* Physical address should be a function call */ | ||||||
| #ifndef __ASSEMBLY__ | #ifndef __ASSEMBLY__ | ||||||
| extern unsigned long long get_phys_ccsrbar_addr_early(void); | extern unsigned long long get_phys_ccsrbar_addr_early(void); | ||||||
|  | #define CONFIG_SYS_CCSRBAR_PHYS_HIGH (get_phys_ccsrbar_addr_early() >> 32) | ||||||
|  | #define CONFIG_SYS_CCSRBAR_PHYS_LOW get_phys_ccsrbar_addr_early() | ||||||
|  | #else | ||||||
|  | #define CONFIG_SYS_CCSRBAR_PHYS_HIGH 0x0 | ||||||
|  | #define CONFIG_SYS_CCSRBAR_PHYS_LOW CONFIG_SYS_CCSRBAR | ||||||
| #endif | #endif | ||||||
| #define CONFIG_SYS_CCSR_DO_NOT_RELOCATE | 
 | ||||||
|  | #define CONFIG_PHYS_64BIT | ||||||
| 
 | 
 | ||||||
| /* Virtual address range for PCI region maps */ | /* Virtual address range for PCI region maps */ | ||||||
| #define CONFIG_SYS_PCI_MAP_START	0x80000000 | #define CONFIG_SYS_PCI_MAP_START	0x80000000 | ||||||
|  | |||||||
| @ -6,10 +6,6 @@ | |||||||
| #ifndef	__MPC85xx_H__ | #ifndef	__MPC85xx_H__ | ||||||
| #define __MPC85xx_H__ | #define __MPC85xx_H__ | ||||||
| 
 | 
 | ||||||
| /* define for common ppc_asm.tmpl */ |  | ||||||
| #define EXC_OFF_SYS_RESET	0x100	/* System reset */ |  | ||||||
| #define _START_OFFSET		0 |  | ||||||
| 
 |  | ||||||
| #if defined(CONFIG_E500) | #if defined(CONFIG_E500) | ||||||
| #include <e500.h> | #include <e500.h> | ||||||
| #endif | #endif | ||||||
|  | |||||||
| @ -12,6 +12,8 @@ | |||||||
| #ifndef	__PPC_ASM_TMPL__ | #ifndef	__PPC_ASM_TMPL__ | ||||||
| #define __PPC_ASM_TMPL__ | #define __PPC_ASM_TMPL__ | ||||||
| 
 | 
 | ||||||
|  | #include <config.h> | ||||||
|  | 
 | ||||||
| /*************************************************************************** | /*************************************************************************** | ||||||
|  * |  * | ||||||
|  * These definitions simplify the ugly declarations necessary for GOT |  * These definitions simplify the ugly declarations necessary for GOT | ||||||
| @ -243,6 +245,45 @@ | |||||||
|  */ |  */ | ||||||
| #define COPY_EE(d, s)		rlwimi d,s,0,16,16 | #define COPY_EE(d, s)		rlwimi d,s,0,16,16 | ||||||
| #define NOCOPY(d, s) | #define NOCOPY(d, s) | ||||||
|  | 
 | ||||||
|  | #ifdef CONFIG_E500 | ||||||
|  | #define EXC_XFER_TEMPLATE(n, label, hdlr, msr, copyee)	\ | ||||||
|  | 	stw	r22,_NIP(r21);				\ | ||||||
|  | 	stw	r23,_MSR(r21);				\ | ||||||
|  | 	li	r23,n;					\ | ||||||
|  | 	stw	r23,TRAP(r21);				\ | ||||||
|  | 	li	r20,msr;				\ | ||||||
|  | 	copyee(r20,r23);				\ | ||||||
|  | 	rlwimi	r20,r23,0,25,25;			\ | ||||||
|  | 	mtmsr	r20;					\ | ||||||
|  | 	bl	1f;					\ | ||||||
|  | 1:	mflr	r23;					\ | ||||||
|  | 	addis	r23,r23,(hdlr - 1b)@ha;			\ | ||||||
|  | 	addi	r23,r23,(hdlr - 1b)@l;			\ | ||||||
|  | 	b	transfer_to_handler | ||||||
|  | 
 | ||||||
|  | #define STD_EXCEPTION(n, label, hdlr)				\ | ||||||
|  | label:								\ | ||||||
|  | 	EXCEPTION_PROLOG(SRR0, SRR1);				\ | ||||||
|  | 	addi	r3,r1,STACK_FRAME_OVERHEAD;			\ | ||||||
|  | 	EXC_XFER_TEMPLATE(n, label, hdlr, MSR_KERNEL, NOCOPY)	\ | ||||||
|  | 
 | ||||||
|  | #define CRIT_EXCEPTION(n, label, hdlr)				\ | ||||||
|  | label:								\ | ||||||
|  | 	EXCEPTION_PROLOG(CSRR0, CSRR1);				\ | ||||||
|  | 	addi	r3,r1,STACK_FRAME_OVERHEAD;			\ | ||||||
|  | 	EXC_XFER_TEMPLATE(n, label, hdlr,			\ | ||||||
|  | 	MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE), NOCOPY)		\ | ||||||
|  | 
 | ||||||
|  | #define MCK_EXCEPTION(n, label, hdlr)				\ | ||||||
|  | label:								\ | ||||||
|  | 	EXCEPTION_PROLOG(MCSRR0, MCSRR1);			\ | ||||||
|  | 	addi	r3,r1,STACK_FRAME_OVERHEAD;			\ | ||||||
|  | 	EXC_XFER_TEMPLATE(n, label, hdlr,			\ | ||||||
|  | 	MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE), NOCOPY)		\ | ||||||
|  | 
 | ||||||
|  | #else	/* !E500 */ | ||||||
|  | 
 | ||||||
| #define EXC_XFER_TEMPLATE(label, hdlr, msr, copyee)	\ | #define EXC_XFER_TEMPLATE(label, hdlr, msr, copyee)	\ | ||||||
| 	bl	1f;					\ | 	bl	1f;					\ | ||||||
| 1:	mflr    r20;					\ | 1:	mflr    r20;					\ | ||||||
| @ -280,4 +321,5 @@ label:								\ | |||||||
| 	EXC_XFER_TEMPLATE(label, hdlr,				\ | 	EXC_XFER_TEMPLATE(label, hdlr,				\ | ||||||
| 	MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE), NOCOPY)		\ | 	MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE), NOCOPY)		\ | ||||||
| 
 | 
 | ||||||
|  | #endif	/* !E500 */ | ||||||
| #endif	/* __PPC_ASM_TMPL__ */ | #endif	/* __PPC_ASM_TMPL__ */ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user