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

📄 smp.c

📁 linux-2.6.15.6
💻 C
字号:
/*  * arch/sh/boards/saturn/smp.c * * SMP support for the Sega Saturn. * * Copyright (c) 2002 Paul Mundt * * Released under the terms of the GNU GPL v2.0. */#include <linux/kernel.h>#include <linux/init.h>#include <linux/smp.h>#include <asm/saturn/smpc.h>extern void start_secondary(void);void __smp_send_ipi(unsigned int cpu, unsigned int action){	/* Nothing here yet .. */}unsigned int __smp_probe_cpus(void){	/*	 * This is just a straightforward master/slave configuration,	 * and probing isn't really supported..	 */	return 2;}/* * We're only allowed to do byte-access to SMPC registers. In * addition to which, we treat them as write-only, since * reading from them will return undefined data. */static inline void smpc_slave_stop(unsigned int cpu){	smpc_barrier();	ctrl_outb(1, SMPC_STATUS);	ctrl_outb(SMPC_CMD_SSHOFF, SMPC_COMMAND);	smpc_barrier();}static inline void smpc_slave_start(unsigned int cpu){	ctrl_outb(1, SMPC_STATUS);	ctrl_outb(SMPC_CMD_SSHON, SMPC_COMMAND);	smpc_barrier();}void __smp_slave_init(unsigned int cpu){	register unsigned long vbr;	void **entry;	__asm__ __volatile__ ("stc vbr, %0\n\t" : "=r" (vbr));	entry = (void **)(vbr + 0x310 + 0x94);	smpc_slave_stop(cpu);	*(void **)entry = (void *)start_secondary;	smpc_slave_start(cpu);}

⌨️ 快捷键说明

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