0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef _ASM_SN_LAUNCH_H
0010 #define _ASM_SN_LAUNCH_H
0011
0012 #include <asm/sn/types.h>
0013 #include <asm/sn/addrs.h>
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 #define LAUNCH_MAGIC 0xaddbead2addbead3
0031 #ifdef CONFIG_SGI_IP27
0032 #define LAUNCH_SIZEOF 0x100
0033 #define LAUNCH_PADSZ 0xa0
0034 #endif
0035
0036 #define LAUNCH_OFF_MAGIC 0x00
0037 #define LAUNCH_OFF_BUSY 0x08
0038 #define LAUNCH_OFF_CALL 0x10
0039 #define LAUNCH_OFF_CALLC 0x18
0040 #define LAUNCH_OFF_CALLPARM 0x20
0041 #define LAUNCH_OFF_STACK 0x28
0042 #define LAUNCH_OFF_GP 0x30
0043 #define LAUNCH_OFF_BEVUTLB 0x38
0044 #define LAUNCH_OFF_BEVNORMAL 0x40
0045 #define LAUNCH_OFF_BEVECC 0x48
0046
0047 #define LAUNCH_STATE_DONE 0
0048 #define LAUNCH_STATE_SENT 1
0049 #define LAUNCH_STATE_RECD 2
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062 #ifndef __ASSEMBLY__
0063
0064 typedef int launch_state_t;
0065 typedef void (*launch_proc_t)(u64 call_parm);
0066
0067 typedef struct launch_s {
0068 volatile u64 magic;
0069 volatile u64 busy;
0070 volatile launch_proc_t call_addr;
0071 volatile u64 call_addr_c;
0072 volatile u64 call_parm;
0073 volatile void *stack_addr;
0074 volatile void *gp_addr;
0075 volatile char *bevutlb;
0076 volatile char *bevnormal;
0077 volatile char *bevecc;
0078 volatile char pad[160];
0079 } launch_t;
0080
0081
0082
0083
0084
0085 #define LAUNCH_SLAVE (*(void (*)(int nasid, int cpu, \
0086 launch_proc_t call_addr, \
0087 u64 call_parm, \
0088 void *stack_addr, \
0089 void *gp_addr)) \
0090 IP27PROM_LAUNCHSLAVE)
0091
0092 #define LAUNCH_WAIT (*(void (*)(int nasid, int cpu, int timeout_msec)) \
0093 IP27PROM_WAITSLAVE)
0094
0095 #define LAUNCH_POLL (*(launch_state_t (*)(int nasid, int cpu)) \
0096 IP27PROM_POLLSLAVE)
0097
0098 #define LAUNCH_LOOP (*(void (*)(void)) \
0099 IP27PROM_SLAVELOOP)
0100
0101 #define LAUNCH_FLASH (*(void (*)(void)) \
0102 IP27PROM_FLASHLEDS)
0103
0104 #endif
0105
0106 #endif