~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/mips/include/asm/sn/launch.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * This file is subject to the terms and conditions of the GNU General Public
  3  * License.  See the file "COPYING" in the main directory of this archive
  4  * for more details.
  5  *
  6  * Copyright (C) 1992 - 1997, 2000 Silicon Graphics, Inc.
  7  * Copyright (C) 2000 by Colin Ngam
  8  */
  9 #ifndef _ASM_SN_LAUNCH_H
 10 #define _ASM_SN_LAUNCH_H
 11 
 12 #include <asm/sn/types.h>
 13 #include <asm/sn/addrs.h>
 14 
 15 /*
 16  * The launch data structure resides at a fixed place in each node's memory
 17  * and is used to communicate between the master processor and the slave
 18  * processors.
 19  *
 20  * The master stores launch parameters in the launch structure
 21  * corresponding to a target processor that is in a slave loop, then sends
 22  * an interrupt to the slave processor.  The slave calls the desired
 23  * function, then returns to the slave loop.  The master may poll or wait
 24  * for the slaves to finish.
 25  *
 26  * There is an array of launch structures, one per CPU on the node.  One
 27  * interrupt level is used per local CPU.
 28  */
 29 
 30 #define LAUNCH_MAGIC            0xaddbead2addbead3
 31 #ifdef CONFIG_SGI_IP27
 32 #define LAUNCH_SIZEOF           0x100
 33 #define LAUNCH_PADSZ            0xa0
 34 #endif
 35 
 36 #define LAUNCH_OFF_MAGIC        0x00    /* Struct offsets for assembly      */
 37 #define LAUNCH_OFF_BUSY         0x08
 38 #define LAUNCH_OFF_CALL         0x10
 39 #define LAUNCH_OFF_CALLC        0x18
 40 #define LAUNCH_OFF_CALLPARM     0x20
 41 #define LAUNCH_OFF_STACK        0x28
 42 #define LAUNCH_OFF_GP           0x30
 43 #define LAUNCH_OFF_BEVUTLB      0x38
 44 #define LAUNCH_OFF_BEVNORMAL    0x40
 45 #define LAUNCH_OFF_BEVECC       0x48
 46 
 47 #define LAUNCH_STATE_DONE       0       /* Return value of LAUNCH_POLL      */
 48 #define LAUNCH_STATE_SENT       1
 49 #define LAUNCH_STATE_RECD       2
 50 
 51 /*
 52  * The launch routine is called only if the complement address is correct.
 53  *
 54  * Before control is transferred to a routine, the complement address
 55  * is zeroed (invalidated) to prevent an accidental call from a spurious
 56  * interrupt.
 57  *
 58  * The slave_launch routine turns on the BUSY flag, and the slave loop
 59  * clears the BUSY flag after control is returned to it.
 60  */
 61 
 62 #ifndef __ASSEMBLY__
 63 
 64 typedef int launch_state_t;
 65 typedef void (*launch_proc_t)(u64 call_parm);
 66 
 67 typedef struct launch_s {
 68         volatile u64            magic;  /* Magic number                     */
 69         volatile u64            busy;   /* Slave currently active           */
 70         volatile launch_proc_t  call_addr;      /* Func. for slave to call  */
 71         volatile u64            call_addr_c;    /* 1's complement of call_addr*/
 72         volatile u64            call_parm;      /* Single parm passed to call*/
 73         volatile void *stack_addr;      /* Stack pointer for slave function */
 74         volatile void *gp_addr;         /* Global pointer for slave func.   */
 75         volatile char           *bevutlb;/* Address of bev utlb ex handler   */
 76         volatile char           *bevnormal;/*Address of bev normal ex handler */
 77         volatile char           *bevecc;/* Address of bev cache err handler */
 78         volatile char           pad[160];       /* Pad to LAUNCH_SIZEOF     */
 79 } launch_t;
 80 
 81 /*
 82  * PROM entry points for launch routines are determined by IPxxprom/start.s
 83  */
 84 
 85 #define LAUNCH_SLAVE    (*(void (*)(int nasid, int cpu, \
 86                                     launch_proc_t call_addr, \
 87                                     u64 call_parm, \
 88                                     void *stack_addr, \
 89                                     void *gp_addr)) \
 90                          IP27PROM_LAUNCHSLAVE)
 91 
 92 #define LAUNCH_WAIT     (*(void (*)(int nasid, int cpu, int timeout_msec)) \
 93                          IP27PROM_WAITSLAVE)
 94 
 95 #define LAUNCH_POLL     (*(launch_state_t (*)(int nasid, int cpu)) \
 96                          IP27PROM_POLLSLAVE)
 97 
 98 #define LAUNCH_LOOP     (*(void (*)(void)) \
 99                          IP27PROM_SLAVELOOP)
100 
101 #define LAUNCH_FLASH    (*(void (*)(void)) \
102                          IP27PROM_FLASHLEDS)
103 
104 #endif /* !__ASSEMBLY__ */
105 
106 #endif /* _ASM_SN_LAUNCH_H */
107 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php