[302] | 1 | $
|
---|
| 2 | $ ãã¹2ã®ã¿ã¼ã²ããä¾åãã³ãã¬ã¼ãï¼Mac OS Xç¨ï¼
|
---|
| 3 | $
|
---|
| 4 | $ $Id: target.tf 405 2015-08-02 21:56:53Z ertl-hiro $
|
---|
| 5 | $
|
---|
| 6 |
|
---|
| 7 | $
|
---|
| 8 | $ 使ç¨ã§ããå²è¾¼ã¿çªå·ã¨ããã«å¯¾å¿ããå²è¾¼ã¿ãã³ãã©çªå·
|
---|
| 9 | $
|
---|
| 10 | $ å²è¾¼ã¿çªå·ã¨å²è¾¼ã¿ãã³ãã©çªå·ã¯ï¼ã·ã°ãã«çªå·ã«ä¸è´ãããï¼1ã31ã®
|
---|
| 11 | $ ã·ã°ãã«çªå·ã®å
|
---|
| 12 | ï¼SIGKILLï¼ï¼9ï¼ï¼SIGSTOPï¼ï¼17ï¼ï¼SIGUSR2ï¼ï¼31ï¼ä»¥
|
---|
| 13 | $ å¤ã使ç¨ã§ããï¼
|
---|
| 14 | $
|
---|
| 15 | $INTNO_VALID = { 1, 2, ..., 8; 10, 11, ..., 16; 18, 19, ..., 30 }$
|
---|
| 16 | $INHNO_VALID = INTNO_VALID$
|
---|
| 17 | $EXCNO_VALID = INTNO_VALID$
|
---|
| 18 |
|
---|
| 19 | $
|
---|
| 20 | $ CFG_INTã§ä½¿ç¨ã§ããå²è¾¼ã¿çªå·ã¨å²è¾¼ã¿åªå
|
---|
| 21 | 度
|
---|
| 22 | $
|
---|
| 23 | $ å²è¾¼ã¿åªå
|
---|
| 24 | 度ã¯ï¼-1ã-7ã使ç¨ã§ããï¼-7ã¯NMIã¨æ±ãï¼
|
---|
| 25 | $
|
---|
| 26 | $INTPRI_CFGINT_VALID = { -1, -2, ..., -7 }$
|
---|
| 27 |
|
---|
| 28 | $
|
---|
| 29 | $ ã¹ã¿ãã¯é åã®ç¢ºä¿é¢æ°
|
---|
| 30 | $
|
---|
| 31 | $ Intelããã»ããµã§ã¯ï¼ã¹ã¿ãã¯ãã¤ã³ã¿ã16ãã¤ãå¢çã«ã¢ã©ã¤ã³ããã
|
---|
| 32 | $ å¿
|
---|
| 33 | è¦ãããï¼
|
---|
| 34 | $
|
---|
| 35 | $FUNCTION ALLOC_STACK$
|
---|
| 36 | static STK_T $ARGV[1]$[COUNT_STK_T($ARGV[2]$)]
|
---|
| 37 | $SPC$__attribute__((aligned(16)));$NL$
|
---|
| 38 | $RESULT = FORMAT("ROUND_STK_T(%1%)", ARGV[2])$
|
---|
| 39 | $END$
|
---|
| 40 |
|
---|
| 41 | $
|
---|
| 42 | $ æ¨æºãã³ãã¬ã¼ããã¡ã¤ã«ã®ã¤ã³ã¯ã«ã¼ã
|
---|
| 43 | $
|
---|
| 44 | $INCLUDE "kernel/kernel.tf"$
|
---|
| 45 |
|
---|
| 46 | $
|
---|
| 47 | $ ã¿ã¼ã²ããä¾åã®å®ç¾©ã®çæ
|
---|
| 48 | $
|
---|
| 49 | $FILE "kernel_cfg.c"$
|
---|
| 50 |
|
---|
| 51 | /*$NL$
|
---|
| 52 | $SPC$* Target-dependent Definitions (Mac OS X)$NL$
|
---|
| 53 | $SPC$*/$NL$
|
---|
| 54 | $NL$
|
---|
| 55 |
|
---|
| 56 | $
|
---|
| 57 | $ ãã¹ã¯ã§ããªãã·ã°ãã«ã¨ã«ã¼ãã«ã使ãã·ã°ãã«ã«é¢ããè¨å®
|
---|
| 58 | $
|
---|
| 59 | $ SIGKILLï¼ãã¹ã¯ä¸å¯ï¼
|
---|
| 60 | $ SIGSTOPï¼ãã¹ã¯ä¸å¯ï¼
|
---|
| 61 | $ SIGUSR2ï¼ã«ã¼ãã«ãå©ç¨ï¼
|
---|
| 62 | $
|
---|
| 63 | $INT.INTPRI[SIGKILL] = -7$
|
---|
| 64 | $INT.INTPRI[SIGSTOP] = -7$
|
---|
| 65 | $INT.INTPRI[SIGUSR2] = -7$
|
---|
| 66 |
|
---|
| 67 | $
|
---|
| 68 | $ CFG_INTã®ã¿ã¼ã²ããä¾åã®ã¨ã©ã¼ãã§ãã¯
|
---|
| 69 | $
|
---|
| 70 | $FOREACH intno INT.ORDER_LIST$
|
---|
| 71 | $IF (INT.INTATR[intno] & TA_EDGE) == 0$
|
---|
| 72 | $ERROR INT.TEXT_LINE[intno]$E_RSATR:$SPC$
|
---|
| 73 | $FORMAT("Level trigger is not supported for %1% `%2%\' in %3%",
|
---|
| 74 | "intno", INT.INTNO[intno], "CFG_INT")$
|
---|
| 75 | $END$
|
---|
| 76 | $END$
|
---|
| 77 | $END$
|
---|
| 78 |
|
---|
| 79 | $
|
---|
| 80 | $ CPUä¾å¤ãã³ãã©ã«é¢ããå¦ç
|
---|
| 81 | $
|
---|
| 82 | $FOREACH excno EXC.ORDER_LIST$
|
---|
| 83 | $ // å²è¾¼ã¿ãã³ãã©ã¨ã®éè¤ãã§ãã¯
|
---|
| 84 | $IF LENGTH(INH.INHNO[excno])$
|
---|
| 85 | $ERROR EXC.TEXT_LINE[excno]$E_OBJ:$SPC$
|
---|
| 86 | $FORMAT(_("%1% `%2%\' in %3% is duplicated with %4% `%5%\'"),
|
---|
| 87 | "excno", EXC.EXCNO[excno], "DEF_EXC",
|
---|
| 88 | "inhno", INH.INHNO[excno])$
|
---|
| 89 | $END$
|
---|
| 90 | $END$
|
---|
| 91 |
|
---|
| 92 | $ // CPUä¾å¤ãã³ãã©ãç»é²ããã·ã°ãã«ã«é¢ããè¨å®
|
---|
| 93 | $IF LENGTH(INTNO[excno])$
|
---|
| 94 | $INT.INTPRI[INTNO[excno]] = -7$
|
---|
| 95 | $END$
|
---|
| 96 | $END$
|
---|
| 97 |
|
---|
| 98 | $
|
---|
| 99 | $ ãããã°ç¨ã«ãã¹ã¯ããªãã·ã°ãã«ã«é¢ããè¨å®
|
---|
| 100 | $
|
---|
| 101 | $ SIGINTï¼ãããã°ç¨ï¼
|
---|
| 102 | $ SIGBUSï¼ãããã°ç¨ï¼
|
---|
| 103 | $ SIGSEGVï¼ãããã°ç¨ï¼
|
---|
| 104 | $
|
---|
| 105 | $IF !LENGTH(INT.INTPRI[SIGINT])$
|
---|
| 106 | $INT.INTPRI[SIGINT] = -7$
|
---|
| 107 | $END$
|
---|
| 108 | $IF !LENGTH(INT.INTPRI[SIGBUS])$
|
---|
| 109 | $INT.INTPRI[SIGBUS] = -7$
|
---|
| 110 | $END$
|
---|
| 111 | $IF !LENGTH(INT.INTPRI[SIGSEGV])$
|
---|
| 112 | $INT.INTPRI[SIGSEGV] = -7$
|
---|
| 113 | $END$
|
---|
| 114 |
|
---|
| 115 | $
|
---|
| 116 | $ å²è¾¼ã¿ãã³ãã©ã®åæåã«å¿
|
---|
| 117 | è¦ãªæ
|
---|
| 118 | å ±
|
---|
| 119 | $
|
---|
| 120 |
|
---|
| 121 | $
|
---|
| 122 | $ å®ç¾©ããå²è¾¼ã¿ãã³ãã©ã®æ°
|
---|
| 123 | $
|
---|
| 124 | #define TNUM_DEF_INHNO $LENGTH(INH.ORDER_LIST)$$NL$
|
---|
| 125 | const uint_t _kernel_tnum_def_inhno = TNUM_DEF_INHNO;$NL$
|
---|
| 126 | $NL$
|
---|
| 127 | $FOREACH inhno INH.ORDER_LIST$
|
---|
| 128 | $IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
|
---|
| 129 | INTHDR_ENTRY($INH.INHNO[inhno]$, $INH.INTHDR[inhno]$,$SPC$
|
---|
| 130 | $INT.INTPRI[INTNO[inhno]]$)$NL$
|
---|
| 131 | $END$
|
---|
| 132 | $END$
|
---|
| 133 | $NL$
|
---|
| 134 |
|
---|
| 135 | $
|
---|
| 136 | $ å²è¾¼ã¿ãã³ãã©åæåãã¼ãã«
|
---|
| 137 | $
|
---|
| 138 | $IF LENGTH(INH.ORDER_LIST)$
|
---|
| 139 | const INHINIB _kernel_inhinib_table[TNUM_DEF_INHNO] = {$NL$
|
---|
| 140 | $JOINEACH inhno INH.ORDER_LIST ",\n"$
|
---|
| 141 | $TAB${$SPC$
|
---|
| 142 | $ // å²è¾¼ã¿ãã³ãã©çªå·ï¼å²è¾¼ã¿ãã³ãã©å±æ§
|
---|
| 143 | ($INH.INHNO[inhno]$), ($INH.INHATR[inhno]$),$SPC$
|
---|
| 144 |
|
---|
| 145 | $ // å²è¾¼ã¿ãã³ãã©ã®åºå
|
---|
| 146 | ¥å£å¦çã®çªå°
|
---|
| 147 | $IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
|
---|
| 148 | (FP)(INT_ENTRY($INH.INHNO[inhno]$, $INH.INTHDR[inhno]$))
|
---|
| 149 | $ELSE$
|
---|
| 150 | (FP)($INH.INTHDR[inhno]$)
|
---|
| 151 | $END$,$SPC$
|
---|
| 152 |
|
---|
| 153 | $ // å²è¾¼ã¿åªå
|
---|
| 154 | 度
|
---|
| 155 | ($INT.INTPRI[INTNO[INH.INHNO[inhno]]]$)$SPC$
|
---|
| 156 | }$END$$NL$
|
---|
| 157 | };$NL$
|
---|
| 158 | $ELSE$
|
---|
| 159 | TOPPERS_EMPTY_LABEL(const INHINIB, _kernel_inhinib_table);$NL$
|
---|
| 160 | $END$
|
---|
| 161 | $NL$
|
---|
| 162 |
|
---|
| 163 | $
|
---|
| 164 | $ å²è¾¼ã¿åªå
|
---|
| 165 | 度æ¯ã®ãã以ä¸ã®å²è¾¼ã¿è¦æ±ããã¹ã¯ããããã®æ
|
---|
| 166 | å ±ã®ãã¼ãã«
|
---|
| 167 | $
|
---|
| 168 | const sigset_t _kernel_sigmask_table[8] = {$NL$
|
---|
| 169 | $FOREACH intpri { 0, -1, ..., -6 }$
|
---|
| 170 | $intmask = 0$
|
---|
| 171 | $FOREACH intno { 1, 2, ..., 31 }$
|
---|
| 172 | $IF ALT(INT.INTPRI[intno], 0) >= intpri$
|
---|
| 173 | $intmask = intmask | (1 << (intno - 1))$
|
---|
| 174 | $END$
|
---|
| 175 | $END$
|
---|
| 176 | $TAB$UINT32_C($FORMAT("0x%08x", intmask)$),$NL$
|
---|
| 177 | $END$
|
---|
| 178 | $TAB$UINT32_C($FORMAT("0x%08x", intmask)$)$NL$
|
---|
| 179 | };$NL$
|
---|
| 180 |
|
---|
| 181 | $
|
---|
| 182 | $ å²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°å®ç¾ã®ããã®å¤æ°ã®åæå¤
|
---|
| 183 | $
|
---|
| 184 | $sigmask_disint_init = 0$
|
---|
| 185 | $FOREACH intno INT.ORDER_LIST$
|
---|
| 186 | $IF (INT.INTATR[intno] & TA_ENAINT) == 0$
|
---|
| 187 | $sigmask_disint_init = sigmask_disint_init
|
---|
| 188 | | (1 << (INT.INTNO[intno] - 1))$
|
---|
| 189 | $END$
|
---|
| 190 | $END$
|
---|
| 191 | $NL$
|
---|
| 192 | const sigset_t _kernel_sigmask_disint_init =
|
---|
| 193 | UINT32_C($FORMAT("0x%08x", sigmask_disint_init)$);$NL$
|
---|