⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setup.s

📁 linux-2.6.15.6
💻 S
字号:
/* *  linux/arch/m32r/boot/setup.S -- A setup code. * *  Copyright (C) 2001, 2002  Hiroyuki Kondo, Hirokazu Takata, *  and Hitoshi Yamamoto * *//* $Id$ */#include <linux/linkage.h>#include <asm/segment.h>#include <asm/page.h>#include <asm/pgtable.h>#include <linux/config.h>#include <asm/assembler.h>#include <asm/mmu_context.h>#include <asm/m32r.h>/* * References to members of the boot_cpu_data structure. */#define CPU_PARAMS	boot_cpu_data#define M32R_MCICAR	 0xfffffff0#define M32R_MCDCAR	 0xfffffff4#define M32R_MCCR 	 0xfffffffc#define M32R_BSCR0	 0xffffffd2;BSEL#define BSEL0CR0	 0x00ef5000#define	BSEL0CR1	 0x00ef5004#define BSEL1CR0	 0x00ef5100#define BSEL1CR1	 0x00ef5104#define BSEL0CR0_VAL	 0x00000000#define BSEL0CR1_VAL	 0x01200100#define BSEL1CR0_VAL	 0x01018000#define BSEL1CR1_VAL	 0x00200001;SDRAMC#define SDRAMC_SDRF0	 0x00ef6000#define SDRAMC_SDRF1	 0x00ef6004#define SDRAMC_SDIR0	 0x00ef6008#define SDRAMC_SDIR1	 0x00ef600c#define SDRAMC_SD0ADR	 0x00ef6020#define SDRAMC_SD0ER	 0x00ef6024#define SDRAMC_SD0TR	 0x00ef6028#define SDRAMC_SD0MOD	 0x00ef602c#define SDRAMC_SD1ADR	 0x00ef6040#define SDRAMC_SD1ER	 0x00ef6044#define SDRAMC_SD1TR	 0x00ef6048#define SDRAMC_SD1MOD	 0x00ef604c#define SDRAM0		 0x18000000#define SDRAM1		 0x1c000000/*------------------------------------------------------------------------ * start up *//*------------------------------------------------------------------------ * Kernel entry */	.section .boot, "ax"ENTRY(boot)/* Set cache mode */#if defined(CONFIG_CHIP_XNUX2)	ldi	r0, #-2              ;LDIMM	(r0, M32R_MCCR)	ldi	r1, #0x0101		; cache on (with invalidation);	ldi	r1, #0x00		; cache off	sth	r1, @r0#elif defined(CONFIG_CHIP_M32700) || defined(CONFIG_CHIP_VDEC2) \    || defined(CONFIG_CHIP_OPSP)	ldi	r0, #-4              ;LDIMM	(r0, M32R_MCCR)	ldi	r1, #0x73		; cache on (with invalidation);	ldi	r1, #0x00		; cache off	st	r1, @r0#elif defined(CONFIG_CHIP_M32102)	ldi	r0, #-4              ;LDIMM	(r0, M32R_MCCR)	ldi	r1, #0x101		; cache on (with invalidation);	ldi	r1, #0x00		; cache off	st	r1, @r0#else#error unknown chip configuration#endif#ifdef CONFIG_SMP	;; if not BSP (CPU#0) goto AP_loop	seth	r5, #shigh(M32R_CPUID_PORTL)	ld      r5, @(low(M32R_CPUID_PORTL), r5)	bnez	r5, AP_loop#if !defined(CONFIG_PLAT_USRV)	;; boot AP	ld24	r5, #0xeff2f8		; IPICR7	ldi	r6, #0x2		; IPI to CPU1	st	r6, @r5#endif#endif/* *  Now, Jump to stext *        if with MMU,    TLB on. *        if with no MMU, only jump. */ 	.global	eit_vectormmu_on:	LDIMM	(r13, stext)#ifdef CONFIG_MMU	bl	init_tlb	LDIMM	(r2, eit_vector)		; set EVB(cr5)	mvtc    r2, cr5	seth	r0, #high(MMU_REG_BASE)		; Set MMU_REG_BASE higher	or3     r0, r0, #low(MMU_REG_BASE)	; Set MMU_REG_BASE lower	ldi     r1, #0x01	st      r1, @(MATM_offset,r0)		; Set MATM (T bit ON)	ld      r0, @(MATM_offset,r0)		; Check#else	seth	r0,#high(M32R_MCDCAR)	or3	r0,r0,#low(M32R_MCDCAR)	ld24	r1,#0x8080	st	r1,@r0#endif	/* CONFIG_MMU */	jmp	r13	nop	nop#ifdef CONFIG_SMP/* * AP wait loop */ENTRY(AP_loop)	;; disable interrupt	clrpsw	#0x40	;; reset EVB	LDIMM	(r4, _AP_RE)	seth	r5, #high(__PAGE_OFFSET)	or3	r5, r5, #low(__PAGE_OFFSET)	not	r5, r5	and	r4, r5	mvtc	r4, cr5	;; disable maskable interrupt	seth	r4, #high(M32R_ICU_IMASK_PORTL)	or3	r4, r4, #low(M32R_ICU_IMASK_PORTL)	ldi	r5, #0	st	r5, @r4	ld	r5, @r4	;; enable only IPI	setpsw	#0x40    	;; LOOOOOOOOOOOOOOP!!!	.fillinsn2:	nop	nop	bra	2b	nop	nop#ifdef CONFIG_CHIP_M32700_TS1	.global	dcache_dummy	.balign	16, 0dcache_dummy:	.byte	16#endif	/* CONFIG_CHIP_M32700_TS1 */#endif	/* CONFIG_SMP */	.end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -