404

[ Avaa Bypassed ]




Upload:

Command:

botdev@3.14.146.45: ~ $
/*
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file "COPYING" in the main directory of this archive
 * for more details.
 *
 * Copyright (C) 1992 - 1997, 2000 Silicon Graphics, Inc.
 * Copyright (C) 2000 by Colin Ngam
 */
#ifndef _ASM_SN_LAUNCH_H
#define _ASM_SN_LAUNCH_H

#include <asm/sn/types.h>
#include <asm/sn/addrs.h>

/*
 * The launch data structure resides at a fixed place in each node's memory
 * and is used to communicate between the master processor and the slave
 * processors.
 *
 * The master stores launch parameters in the launch structure
 * corresponding to a target processor that is in a slave loop, then sends
 * an interrupt to the slave processor.	 The slave calls the desired
 * function, then returns to the slave loop.  The master may poll or wait
 * for the slaves to finish.
 *
 * There is an array of launch structures, one per CPU on the node.  One
 * interrupt level is used per local CPU.
 */

#define LAUNCH_MAGIC		0xaddbead2addbead3
#ifdef CONFIG_SGI_IP27
#define LAUNCH_SIZEOF		0x100
#define LAUNCH_PADSZ		0xa0
#endif

#define LAUNCH_OFF_MAGIC	0x00	/* Struct offsets for assembly	    */
#define LAUNCH_OFF_BUSY		0x08
#define LAUNCH_OFF_CALL		0x10
#define LAUNCH_OFF_CALLC	0x18
#define LAUNCH_OFF_CALLPARM	0x20
#define LAUNCH_OFF_STACK	0x28
#define LAUNCH_OFF_GP		0x30
#define LAUNCH_OFF_BEVUTLB	0x38
#define LAUNCH_OFF_BEVNORMAL	0x40
#define LAUNCH_OFF_BEVECC	0x48

#define LAUNCH_STATE_DONE	0	/* Return value of LAUNCH_POLL	    */
#define LAUNCH_STATE_SENT	1
#define LAUNCH_STATE_RECD	2

/*
 * The launch routine is called only if the complement address is correct.
 *
 * Before control is transferred to a routine, the complement address
 * is zeroed (invalidated) to prevent an accidental call from a spurious
 * interrupt.
 *
 * The slave_launch routine turns on the BUSY flag, and the slave loop
 * clears the BUSY flag after control is returned to it.
 */

#ifndef __ASSEMBLY__

typedef int launch_state_t;
typedef void (*launch_proc_t)(u64 call_parm);

typedef struct launch_s {
	volatile u64		magic;	/* Magic number			    */
	volatile u64		busy;	/* Slave currently active	    */
	volatile launch_proc_t	call_addr;	/* Func. for slave to call  */
	volatile u64		call_addr_c;	/* 1's complement of call_addr*/
	volatile u64		call_parm;	/* Single parm passed to call*/
	volatile void *stack_addr;	/* Stack pointer for slave function */
	volatile void *gp_addr;		/* Global pointer for slave func.   */
	volatile char		*bevutlb;/* Address of bev utlb ex handler   */
	volatile char		*bevnormal;/*Address of bev normal ex handler */
	volatile char		*bevecc;/* Address of bev cache err handler */
	volatile char		pad[160];	/* Pad to LAUNCH_SIZEOF	    */
} launch_t;

/*
 * PROM entry points for launch routines are determined by IPxxprom/start.s
 */

#define LAUNCH_SLAVE	(*(void (*)(int nasid, int cpu, \
				    launch_proc_t call_addr, \
				    u64 call_parm, \
				    void *stack_addr, \
				    void *gp_addr)) \
			 IP27PROM_LAUNCHSLAVE)

#define LAUNCH_WAIT	(*(void (*)(int nasid, int cpu, int timeout_msec)) \
			 IP27PROM_WAITSLAVE)

#define LAUNCH_POLL	(*(launch_state_t (*)(int nasid, int cpu)) \
			 IP27PROM_POLLSLAVE)

#define LAUNCH_LOOP	(*(void (*)(void)) \
			 IP27PROM_SLAVELOOP)

#define LAUNCH_FLASH	(*(void (*)(void)) \
			 IP27PROM_FLASHLEDS)

#endif /* !__ASSEMBLY__ */

#endif /* _ASM_SN_LAUNCH_H */

Filemanager

Name Type Size Permission Actions
sn0 Folder 0755
addrs.h File 14.41 KB 0644
agent.h File 1.13 KB 0644
arch.h File 2.08 KB 0644
fru.h File 1.45 KB 0644
gda.h File 3.17 KB 0644
hub.h File 455 B 0644
intr.h File 3.02 KB 0644
io.h File 1.83 KB 0644
ioc3.h File 24.53 KB 0644
klconfig.h File 30.02 KB 0644
kldir.h File 7.87 KB 0644
klkernvars.h File 612 B 0644
launch.h File 3.34 KB 0644
mapped_kernel.h File 1.95 KB 0644
nmi.h File 3.31 KB 0644
sn_private.h File 585 B 0644
types.h File 890 B 0644