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

📄 arch.c

📁 microwindows移植到S3C44B0的源码
💻 C
字号:
/* *  linux/arch/armnommu/kernel/arch.c * *  Architecture specific fixups. */#include <linux/config.h>#include <linux/tty.h>#include <linux/delay.h>#include <linux/pm.h>#include <linux/init.h>#include <asm/elf.h>#include <asm/setup.h>#include <asm/memory.h>#include <asm/mach-types.h>#include <asm/mach/arch.h>#include <asm/hardware/dec21285.h>extern void genarch_init_irq(void);unsigned int vram_size;#ifdef CONFIG_ARCH_ACORNunsigned int memc_ctrl_reg;unsigned int number_mfm_drives;static int __init parse_tag_acorn(const struct tag *tag){	memc_ctrl_reg = tag->u.acorn.memc_control_reg;	number_mfm_drives = tag->u.acorn.adfsdrives;	switch (tag->u.acorn.vram_pages) {	case 512:		vram_size += PAGE_SIZE * 256;	case 256:		vram_size += PAGE_SIZE * 256;	default:		break;	}#if 0	if (vram_size) {		desc->video_start = 0x02000000;		desc->video_end   = 0x02000000 + vram_size;	}#endif	return 0;}__tagtable(ATAG_ACORN, parse_tag_acorn);#ifdef CONFIG_ARCH_RPCstatic void __initfixup_riscpc(struct machine_desc *desc, struct param_struct *unusd,	    char **cmdline, struct meminfo *mi){	/*	 * RiscPC can't handle half-word loads and stores	 */	elf_hwcap &= ~HWCAP_HALF;}extern void __init rpc_map_io(void);MACHINE_START(RISCPC, "Acorn-RiscPC")	MAINTAINER("Russell King")	BOOT_MEM(0x10000000, 0x03000000, 0xe0000000)	BOOT_PARAMS(0x10000100)	DISABLE_PARPORT(0)	DISABLE_PARPORT(1)	FIXUP(fixup_riscpc)	MAPIO(rpc_map_io)	INITIRQ(genarch_init_irq)MACHINE_END#endif#ifdef CONFIG_ARCH_ARCMACHINE_START(ARCHIMEDES, "Acorn-Archimedes")	MAINTAINER("Dave Gilbert")	BOOT_PARAMS(0x0207c000)	INITIRQ(genarch_init_irq)MACHINE_END#endif#ifdef CONFIG_ARCH_A5KMACHINE_START(A5K, "Acorn-A5000")	MAINTAINER("Russell King")	BOOT_PARAMS(0x0207c000)	INITIRQ(genarch_init_irq)MACHINE_END#endif#endif#ifdef CONFIG_ARCH_L7200extern void __init l7200_map_io(void);static void __initfixup_l7200(struct machine_desc *desc, struct param_struct *unused,             char **cmdline, struct meminfo *mi){        mi->nr_banks      = 1;        mi->bank[0].start = PHYS_OFFSET;        mi->bank[0].size  = (32*1024*1024);        mi->bank[0].node  = 0;        ROOT_DEV = MKDEV(RAMDISK_MAJOR,0);        setup_ramdisk( 1, 0, 0, CONFIG_BLK_DEV_RAM_SIZE);        setup_initrd( __phys_to_virt(0xf1000000), 0x005dac7b);        /* Serial Console COM2 and LCD */	strcpy( *cmdline, "console=tty0 console=ttyLU1,115200");        /* Serial Console COM1 and LCD */	//strcpy( *cmdline, "console=tty0 console=ttyLU0,115200");        /* Console on LCD */	//strcpy( *cmdline, "console=tty0");}MACHINE_START(L7200, "LinkUp Systems L7200")	MAINTAINER("Steve Hill / Scott McConnell")	BOOT_MEM(0xf0000000, 0x80040000, 0xd0000000)	FIXUP(fixup_l7200)	MAPIO(l7200_map_io)	INITIRQ(genarch_init_irq)MACHINE_END#endif#ifdef CONFIG_ARCH_NEXUSPCIextern void __init nexuspci_map_io(void);MACHINE_START(NEXUSPCI, "FTV/PCI")	MAINTAINER("Philip Blundell")	BOOT_MEM(0x40000000, 0x10000000, 0xe0000000)	MAPIO(nexuspci_map_io)	INITIRQ(genarch_init_irq)MACHINE_END#endif#ifdef CONFIG_ARCH_TBOXextern void __init tbox_map_io(void);MACHINE_START(TBOX, "unknown-TBOX")	MAINTAINER("Philip Blundell")	BOOT_MEM(0x80000000, 0x00400000, 0xe0000000)	MAPIO(tbox_map_io)	INITIRQ(genarch_init_irq)MACHINE_END#endif#ifdef CONFIG_ARCH_CLPS7110MACHINE_START(CLPS7110, "CL-PS7110")	MAINTAINER("Werner Almesberger")	INITIRQ(genarch_init_irq)MACHINE_END#endif#ifdef CONFIG_ARCH_ETOILEMACHINE_START(ETOILE, "Etoile")	MAINTAINER("Alex de Vries")	INITIRQ(genarch_init_irq)MACHINE_END#endif#ifdef CONFIG_ARCH_LACIE_NASMACHINE_START(LACIE_NAS, "LaCie_NAS")	MAINTAINER("Benjamin Herrenschmidt")	INITIRQ(genarch_init_irq)MACHINE_END#endif#ifdef CONFIG_ARCH_CLPS7500extern void __init clps7500_map_io(void);MACHINE_START(CLPS7500, "CL-PS7500")	MAINTAINER("Philip Blundell")	BOOT_MEM(0x10000000, 0x03000000, 0xe0000000)	MAPIO(clps7500_map_io)	INITIRQ(genarch_init_irq)MACHINE_END#endif#ifdef CONFIG_ARCH_NETARM#include <asm/arch/netarm_registers.h>#include <asm/arch/netarm_mmap.h>#include <asm/arch/netarm_nvram.h>static void __initfixup_netarm(struct machine_desc *desc, struct param_struct *params,             char **cmdline, struct meminfo *mi){	extern void __ramdisk_data, __ramdisk_data_end, _text;	/* code from 2.0.38 by J.deBlaquiere:  --rp */	printk("fixup_netarm: Kernel memory start 0x%08lx end 0x%08lx\n",	       (unsigned long)&_text, (unsigned long)&_end_kernel);#ifdef CONFIG_ETHER_NETARM#ifdef CONFIG_NETARM_EEPROM	/* copy MAC address from NVRAM to Ethernet controller */	{		NA_dev_board_params_t *pParams;		unsigned int *pUint;		unsigned int uItmp;		unsigned int serno;		unsigned int csum;				pParams = (NA_dev_board_params_t *)(NETARM_MMAP_EEPROM_BASE) ;		csum = compute_checksum(pParams) ;				if (csum == 0)		{			/* valid checksum... parse chars */			int i,j ;					serno = 0;			for ( i = 0 ; i < 8 ; i++ )			{				j = parse_decimal(pParams->serialNumber[i]);				if (j < 0)				{					/* invalid digits - pretend csum bad */					csum = 1 ;					break;				}				serno *= 10 ;				serno += j;			}		} else {			/* (csum != 0): use default serial number */			serno = 99335 ;		}		/* multiply serno by 8 to calc MAC */		serno <<= 3 ;				uItmp = serno & 0xFF ;		uItmp <<= 8 ;		uItmp += ( serno >> 8 ) & 0xFF ;		pUint = (unsigned int *)get_eth_reg_addr(NETARM_ETH_SAL_STATION_ADDR_3);		*pUint = uItmp;		uItmp = ( serno >> 16 ) & 0xFF ;		uItmp <<= 8 ;		uItmp += NETARM_OUI_BYTE3 ;		pUint = (unsigned int *)get_eth_reg_addr(NETARM_ETH_SAL_STATION_ADDR_2);		*pUint = uItmp;		uItmp = NETARM_OUI_BYTE2 ;		uItmp <<= 8 ;		uItmp += NETARM_OUI_BYTE1 ;		pUint = (unsigned int *)get_eth_reg_addr(NETARM_ETH_SAL_STATION_ADDR_1);		*pUint = uItmp;	}#else	/* no EEPROM: generate MAC address from GEN_ID */	{		unsigned int *pUint;		unsigned int uItmp;		unsigned int serno;				pUint = (unsigned int *)get_gen_reg_addr(NETARM_GEN_STATUS_CONTROL);		serno = *pUint & 0x7FF;		uItmp = serno & 0xFF ;		uItmp <<= 8 ;		uItmp += ( serno >> 8 ) & 0xFF ;		pUint = get_eth_reg_addr(NETARM_ETH_SAL_STATION_ADDR_3);		*pUint = uItmp;		uItmp = ( serno >> 16 ) & 0xFF ;		uItmp <<= 8 ;		uItmp += NETARM_OUI_BYTE3 ;		pUint = get_eth_reg_addr(NETARM_ETH_SAL_STATION_ADDR_2);		*pUint = uItmp;		uItmp = NETARM_OUI_BYTE2 ;		uItmp <<= 8 ;		uItmp += NETARM_OUI_BYTE1 ;		pUint = get_eth_reg_addr(NETARM_ETH_SAL_STATION_ADDR_1);		*pUint = uItmp;	}#endif#endif#ifdef CONFIG_BLK_DEV_RAMDISK_DATA	setup_ramdisk(1, 0, 0, CONFIG_BLK_DEV_RAM_SIZE);        setup_initrd((int)&__ramdisk_data, 	             (int)&__ramdisk_data_end - (int)&__ramdisk_data);#endif} /* fixup_netarm() */MACHINE_START(NETARM, "NET+ARM")	MAINTAINER("Rolf Peukert")	FIXUP(fixup_netarm)	INITIRQ(genarch_init_irq)MACHINE_END#endif#ifdef CONFIG_ARCH_SWARMstatic void __initfixup_swarm(struct machine_desc *desc, struct param_struct *params,             char **cmdline, struct meminfo *mi){		printk("ARM for SWARM by C Hanish Menon [www.hanishkvc.com] - 9 Sep 2001 \n");					mi->nr_banks      = 1;	/* Note: PHYS_OFFSET set to start after the kernel code and data */	mi->bank[0].start = PHYS_OFFSET; 	mi->bank[0].size  = (10*1024*1024);	mi->bank[0].node  = 0;				#if 0	ROOT_DEV = MKDEV(RAMDISK_MAJOR,0);	setup_ramdisk( 1, 0, 0, CONFIG_BLK_DEV_RAM_SIZE);	/* Initial ramdisk in the last 2 MB of Memory */	setup_initrd( __phys_to_virt(0x00800000), 0x00200000);#endif	/* Serial Console COM2 and LCD */	strcpy( *cmdline, "console=tty0");}MACHINE_START(SWARM, "SWARM")	MAINTAINER("C Hanish Menon [www.hanishkvc.com]")	BOOT_MEM(0x00000000, 0x90000000, 0x90000000)	FIXUP(fixup_swarm)	INITIRQ(genarch_init_irq)MACHINE_END#endif

⌨️ 快捷键说明

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