- Timestamp:
- Jun 26, 2017, 2:55:03 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
asp3_wo_tecs/trunk/arch/arm_m_gcc/common/core_kernel_impl.h
r302 r303 3 3 * Toyohashi Open Platform for Embedded Real-Time Systems/ 4 4 * Advanced Standard Profile Kernel 5 * 5 * 6 6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory 7 7 * Toyohashi Univ. of Technology, JAPAN 8 8 * Copyright (C) 2005-2015 by Embedded and Real-Time Systems Laboratory 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 * 10 * 11 11 * ä¸è¨èä½æ¨©è 12 12 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ … … 45 45 * å 46 46 責ãããã¨ï¼ 47 * 47 * 48 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 49 ã … … 52 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 53 * ã®è²¬ä»»ãè² ããªãï¼ 54 * 54 * 55 55 * @(#) $Id: core_kernel_impl.h 322 2015-04-30 13:23:48Z ertl-ishikawa $ 56 56 */ … … 66 66 #ifndef TOPPERS_CORE_KERNEL_IMPL_H 67 67 #define TOPPERS_CORE_KERNEL_IMPL_H 68 69 /* 70 * åãã£ã¹ããè¡ããã¯ãã®å®ç¾© 71 */ 72 #ifndef CAST 73 #define CAST(type, val) ((type)(val)) 74 #endif /* CAST */ 68 75 69 76 #ifndef TOPPERS_MACRO_ONLY … … 133 140 /* 134 141 * PSPãæå¹ãªãã¿ã¹ã¯ã³ã³ããã¹ãï¼MSPãæå¹ãªãéã¿ã¹ã¯ã³ã³ããã¹ã 135 * ã¨ããï¼ 142 * ã¨ããï¼ 136 143 */ 137 144 if ((get_control() & CONTROL_PSP) == CONTROL_PSP){ … … 163 170 度ãã¹ 164 171 * ã¯ã¯ï¼BASEPRIãç¨ããï¼ 165 * 172 * 166 173 * ããã«å¯¾ãã¦CPUããã¯ãã©ã°ãã»ããããããéã¯ï¼BASEPRIãï¼ã«ã¼ã 167 174 * ã«ç®¡çå¤ã®ãã®ãé¤ããã¹ã¦ã®å²è¾¼ã¿è¦æ±ããã¹ã¯ããå¤(TIPM_LOCK)ã¨ï¼ … … 209 216 * TIPM_LOCKã¯ï¼CPUããã¯ç¶æ 210 217 ã§ã®BASEPRIã®å¤ï¼ã«ã¼ãã«ç®¡çå¤ã®ãã®ã 211 * é¤ããã¹ã¦ã®å²è¾¼ã¿ããã¹ã¯ããå¤ã«å®ç¾©ããï¼ 218 * é¤ããã¹ã¦ã®å²è¾¼ã¿ããã¹ã¯ããå¤ã«å®ç¾©ããï¼ 212 219 */ 213 220 #define IIPM_LOCK INT_IPM(TIPM_LOCK) … … 229 236 /* 230 237 * CPUããã¯ãã©ã°å®ç¾ã®ããã®å¤æ° 231 * 238 * 232 239 * ãããã®å¤æ°ã¯ï¼CPUããã¯ç¶æ 233 240 ã®æã®ã¿æ¸ãæãã¦ãããã¨ããï¼ 234 * ã¤ã³ã©ã¤ã³é¢æ°ä¸ã§ï¼ã¢ã¯ã»ã¹ã®é åºãå¤åããªãããï¼volatile ãæå®ï¼ 241 * ã¤ã³ã©ã¤ã³é¢æ°ä¸ã§ï¼ã¢ã¯ã»ã¹ã®é åºãå¤åããªãããï¼volatile ãæå®ï¼ 235 242 */ 236 243 extern volatile bool_t lock_flag; /* CPUããã¯ãã©ã°ã®å¤ãä¿æããå¤æ° */ … … 309 316 } 310 317 318 319 /* 320 * ã¿ã¹ã¯ãã£ã¹ãããã§ããç¶æ 321 ã«ããã¦ï¼CPUããã¯è§£é¤ç¶æ 322 ããï¼CPUãã㯠323 * ç¶æ 324 ã¸é·ç§»ãããé¢æ°ï¼ 325 * 326 * ãã®é¢æ°ã¯ï¼ãã£ã¹ãããã§ããç¶æ 327 ã§ã®ã¿å¼ã³åºãããï¼ãã£ã¹ãããã§ã 328 * ãç¶æ 329 ã«ããã¦ã¯ï¼å²è¾¼ã¿åªå 330 度ãã¹ã¯å 331 ¨è§£é¤ç¶æ 332 ã§ãã 333 */ 334 Inline void 335 lock_cpu_dsp(void) 336 { 337 /* 338 * ãã®æç¹ã§ã¯å¿ 339 ãå²è¾¼ã¿åªå 340 度å 341 ¨è§£é¤ç¶æ 342 ã§ããããï¼ 343 * ã»å²è¾¼ã¿åªå 344 度ãã¹ã¯ãCPUããã¯ç¶æ 345 346 * ã»å²è¾¼ã¿åªå 347 度ãã¹ã¯ã®ä¿åå¤ãIIPM_ENAALL 348 * ãå¿ 349 ãå®è¡ãã 350 */ 351 set_basepri(IIPM_LOCK); 352 SCS_SYNC; 353 saved_iipm = IIPM_ENAALL; 354 lock_flag = true; 355 /* ã¯ãªãã£ã«ã«ã»ã¯ã·ã§ã³ã®åå¾ã§ã¡ã¢ãªãæ¸ãæããå¯è½æ§ããã */ 356 ARM_MEMORY_CHANGED; 357 } 358 359 /* 360 * ã¿ã¹ã¯ãã£ã¹ãããã§ããç¶æ 361 ã«æ»ãç¶æ³ã«ããã¦ï¼CPUããã¯ç¶æ 362 ããï¼CPU 363 * ããã¯è§£é¤ç¶æ 364 ã¸é·ç§»ãããé¢æ°ï¼ 365 * 366 * ãã®é¢æ°ã¯ï¼CPUããã¯è§£é¤å¾ã¯ï¼ãã£ã¹ãããã§ããç¶æ 367 ã«æ»ãç¶æ³ã§ã®ã¿å¼ 368 * ã³åºãããï¼ãã£ã¹ãããã§ããç¶æ 369 ã«ããã¦ã¯ï¼å²è¾¼ã¿åªå 370 度ãã¹ã¯å 371 ¨è§£é¤ 372 * ç¶æ 373 ã§ãã 374 */ 375 Inline void 376 unlock_cpu_dsp(void) 377 { 378 /* ã¯ãªãã£ã«ã«ã»ã¯ã·ã§ã³ã®åå¾ã§ã¡ã¢ãªãæ¸ãæããå¯è½æ§ããã */ 379 ARM_MEMORY_CHANGED; 380 lock_flag = false; 381 set_basepri(IIPM_ENAALL); 382 } 383 311 384 /* 312 385 * CPUããã¯ç¶æ … … 329 402 度ã®ãããå¹ 330 403 (TBITW_IPRI)ã 8 ã®å ´åã¯ï¼-256 ã 0 ãæå®å¯è½ã§ããï¼ 331 * 404 * 332 405 */ 333 406 #define VALID_INTPRI_CHGIPM(intpri) \ … … 406 479 } 407 480 408 #define lock_cpu_dsp lock_cpu409 #define unlock_cpu_dsp unlock_cpu410 411 481 /* 412 482 * ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ï¼start.Sï¼ 413 483 */ 414 extern void _ start(void);484 extern void _kernel_start(void); 415 485 416 486 /* … … 438 508 */ 439 509 sil_orw((void *)0xE000ED04, (uint32_t)(0x10000000U)); 440 unlock_cpu ();510 unlock_cpu_dsp(); 441 511 /* ãã㧠_dispatchã¸ã¸ã£ã³ã */ 442 512 SCS_SYNC; 443 lock_cpu ();513 lock_cpu_dsp(); 444 514 } 445 515 … … 520 590 * 521 591 * å²è¾¼ã¿ãã³ãã©çªå·(inhno)ã¨å²è¾¼ã¿çªå·(intno)ã¯ï¼å²ãè¾¼ã¿çºçæã« 522 * EPSRã«è¨å®ãããä¾å¤çªå·ã¨ããï¼ 592 * EPSRã«è¨å®ãããä¾å¤çªå·ã¨ããï¼ 523 593 */ 524 594 … … 563 633 * 564 634 * å²è¾¼ã¿å±æ§ãè¨å®ããã¦ããªãå²è¾¼ã¿è¦æ±ã©ã¤ã³ã«å¯¾ãã¦å²è¾¼ã¿è¦æ±ç¦æ¢ 565 * ãã©ã°ãã¯ãªã¢ãããã¨ããå ´åã«ã¯ï¼falseãè¿ãï¼ 635 * ãã©ã°ãã¯ãªã¢ãããã¨ããå ´åã«ã¯ï¼falseãè¿ãï¼ 566 636 */ 567 637 Inline bool_t … … 618 688 (1 << (tmp & 0x1f))); 619 689 } 620 690 621 691 return(true); 622 692 } … … 648 718 /* 649 719 * CPUä¾å¤ãã³ãã©é¢ä¿ 650 */ 720 */ 651 721 652 722 /*
Note:
See TracChangeset
for help on using the changeset viewer.