00001 #ifndef MSG_STRUCT_H_
00002 #define MSG_STRUCT_H_
00003
00004 #include <vxWorks.h>
00005
00006 #include <iccp.h>
00007
00008
00009 #define DBEL_ANNCE_SL3_RES1 31 //W1->M
00010 #define DBEL_ANNCE_SL3_RES2 30 //W2->M
00011 #define DBEL_SND_SL3 29 //SB->M
00012 #define DBEL_ANNCE_FMT_DTA1 28 //W1->M
00013 #define DBEL_ANNCE_FMT_DTA2 27 //W2->M
00014 #define DBEL_FMT_DTA 26 //SB->M, M->W
00015 #define DBEL_SND_DTA 25 //SB->M
00016 #define DBEL_CNFRM_RLS1 24 //W1->M, data in MBOX4
00017 #define DBEL_CNFRM_RLS2 23 //W2->M, data in MBOX5
00018
00019 #define DBEL_DMA_DONE 22
00020
00021 #define DBEL_MZ_EMUL 11
00022 #define DBEL_COMMAND 10
00023 #define DBEL_REPORT 9
00024 #define DBEL_CONS_DTA 0
00025
00026
00027
00028 #define MBOX_MZ_DMA_DONE1 0 //W1->M
00029 #define MBOX_MZ_DMA_DONE2 1 //W2->M
00030 #define MBOX_MZ_RLS_TOKEN 2 //SB->M, M->W
00031
00032
00033 #define MBOX_MZ_CNFRM_RLS1 4
00034 #define MBOX_MZ_CNFRM_RLS2 5
00035
00036
00037 #define DBEL_SB_MON_DTA 31
00038 #define DBEL_SB_LOG_DTA 30
00039 #define DBEL_SB_COMMAND 29
00040 #define DBEL_SB_DEATH 28
00041 #define DBEL_SB_CONS_DTA 0
00042
00043
00044 #define DBEL_SB_ANNCE_SL3_RES 1
00045 #define DBEL_SB_ANNCE_FMT_DTA 2
00046 #define DBEL_SB_CNFRM_RLS_TKN 3
00047 #define DBEL_SB_CNFRM_SEND 4 // used to inform the SB
00048
00049
00050
00051 #define MBOX_SB_ANNCE_SL3_RES 0
00052 #define MBOX_SB_ANNCE_FMT_DTA 1
00053 #define MBOX_SB_CNFRM_RLS_TKN 2
00054 #define MBOX_SB_CNFRM_SEND 3 // used to inform the SB
00055
00056
00057 #define MBOX_MZ_OUT_DEATH 0
00058
00059 #define DEATH_DELAY_QUE_FULL 1
00060 #define DEATH_BERR 2
00061 #define DEATH_OUT_OF_MEM 3
00062 #define DEATH_OUT_OF_RSRC 4
00063 #define DEATH_RSRC_MISSING 5
00064 #define DEATH_BAD_STATE 6
00065
00066
00067
00068
00069 #if __GNUC__ == 2 && __GNUC_MINOR__ < 96 && I960 == 1
00070 #pragma pack 2
00071 #endif
00072
00073
00074 typedef struct {
00075 UINT32 token : 12 ;
00076 UINT32 status : 4 ;
00077 UINT32 src : 4 ;
00078 UINT32 dst : 4 ;
00079 UINT32 cmd : 8 ;
00080 } msg_0 ;
00081
00082 typedef struct {
00083 UINT32 token : 12 ;
00084 UINT32 status : 4 ;
00085 UINT32 src : 4 ;
00086 UINT32 dst : 4 ;
00087 UINT32 cmd : 8 ;
00088
00089 UINT32 d[1] ;
00090
00091 } msg_1 ;
00092
00093 typedef struct {
00094 UINT32 token : 12 ;
00095 UINT32 status : 4 ;
00096 UINT32 src : 4 ;
00097 UINT32 dst : 4 ;
00098 UINT32 cmd : 8 ;
00099
00100 UINT32 d[2] ;
00101
00102 } msg_2 ;
00103
00104 typedef struct {
00105 UINT32 token : 12 ;
00106 UINT32 status : 4 ;
00107 UINT32 src : 4 ;
00108 UINT32 dst : 4 ;
00109 UINT32 cmd : 8 ;
00110
00111 UINT32 d[13] ;
00112 } msg_A ;
00113
00114
00115
00116
00117 #if __GNUC__ == 2 && __GNUC_MINOR__ < 96 && I960 == 1
00118 #pragma pack 0
00119 #endif
00120
00121
00122
00123
00124 struct mon_dta {
00125 UINT32 len ;
00126 UINT32 d[256] ;
00127 } ;
00128
00129 struct console_dta { ;
00130 UINT32 len ;
00131 UINT8 d[256] ;
00132 } ;
00133
00134 struct log_dta {
00135 UINT32 len ;
00136 UINT8 d[256] ;
00137 } ;
00138
00139
00140 #if __GNUC__ == 2 && __GNUC_MINOR__ < 96 && I960 == 1
00141 #pragma pack 4
00142 #endif
00143
00144
00145 struct mzMsgStruct {
00146 msg_1 annce_sl3_res[2] ;
00147 msg_1 annce_fmt_dta[2] ;
00148
00149 msg_1 snd_sl3 ;
00150 msg_1 fmt_dta ;
00151 msg_1 snd_dta ;
00152
00153 msg_A cmd ;
00154
00155 struct console_dta console_dta;
00156 struct mon_dta mon_dta ;
00157 } ;
00158
00159
00160
00161
00162 struct rbMsgStruct {
00163
00164
00165 msg_1 annce_sl3_res ;
00166 msg_1 annce_fmt_dta ;
00167 msg_0 cnfrm_rel_tkn ;
00168 msg_0 sb_dma ;
00169
00170
00171
00172
00173 struct mon_dta mon_dta[3] ;
00174 struct log_dta log_dta[3] ;
00175 struct console_dta console_dta[3] ;
00176 msg_A cmd[3] ;
00177 } ;
00178
00179
00180
00181
00182 #if __GNUC__ == 2 && __GNUC_MINOR__ < 96 && I960 == 1
00183 #pragma pack 0
00184 #endif
00185
00186 #if (CPU == I960HX)
00187
00188
00189 #define MZ_DST_SB 3
00190 #define MZ_DST_PROC 4
00191 #define MZ_DST_FMT 5
00192 #define MZ_DST_DMAER 6
00193
00194 extern volatile struct rbMsgStruct *rbMsgStruct ;
00195 extern volatile struct mzMsgStruct *mzMsgStruct[3], *mzMyMsgStruct ;
00196
00197 extern int sendMsg(msg_A *m, void (*func)(UINT32), UINT32 param) ;
00198 extern int msg(int dst, msg_A *mp) ;
00199
00200
00201 #endif
00202
00203
00204 #ifdef DBG_MSG_STRUCT
00205 #include <stdio.h>
00206
00207 #ifdef __cplusplus
00208 extern "C" {
00209 #endif
00210
00211 extern void sizer(void) ;
00212
00213 #ifdef __cplusplus
00214 }
00215 #endif
00216
00217
00218 void sizer(void)
00219 {
00220
00221 printf("msg_0 %d\n",sizeof(msg_0));
00222 printf("msg_1 %d\n",sizeof(msg_1));
00223 printf("msg_2 %d\n",sizeof(msg_2));
00224
00225 printf("msg_A %d\n",sizeof(msg_A)) ;
00226 printf("mon_dta %d\n",sizeof(struct mon_dta));
00227 printf("console_dta %d\n",sizeof(struct console_dta)) ;
00228 printf("log_dta %d\n",sizeof(struct log_dta)) ;
00229
00230
00231
00232 printf("mzMsgStruct %d\n",sizeof(struct mzMsgStruct)) ;
00233 printf("rbMsgStruct %d\n",sizeof(struct rbMsgStruct)) ;
00234
00235
00236
00237 printf("msg_0 %d\n",__alignof__(msg_0));
00238 printf("msg_1 %d\n",__alignof__(msg_1));
00239 printf("msg_2 %d\n",__alignof__(msg_2));
00240 printf("msg_A %d\n",__alignof__(msg_A)) ;
00241
00242 printf("mon_dta %d\n",__alignof__(struct mon_dta));
00243 printf("console_dta %d\n",__alignof__(struct console_dta)) ;
00244
00245 printf("log_dta %d\n",__alignof__(struct log_dta)) ;
00246
00247
00248 printf("mzMsgStruct %d\n",__alignof__(struct mzMsgStruct)) ;
00249 printf("rbMsgStruct %d\n",__alignof__(struct rbMsgStruct)) ;
00250
00251 return ;
00252 }
00253
00254 #endif
00255
00256
00257 #endif