- Timestamp:
- Jul 3, 2020, 7:19:17 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/arm_insn.h
r321 r429 5 5 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory 6 6 * Toyohashi Univ. of Technology, JAPAN 7 * Copyright (C) 2006-201 6by Embedded and Real-Time Systems Laboratory7 * Copyright (C) 2006-2018 by Embedded and Real-Time Systems Laboratory 8 8 * Graduate School of Information Science, Nagoya Univ., JAPAN 9 9 * … … 105 105 * Thumbモードではmrs/msr命令が使用できないため,関数として実現して, 106 106 * ARMモードに移行して実行する. 107 * 108 * current_cpsrとset_cpsrは,__thumb__が定義されない場合にはヘッダファ 109 * イル中で定義されるインライン関数になるため,core_rename.defに登録 110 * せず,先頭の_kernel_を手書きしている. 107 111 */ 108 112 … … 110 114 * ステータスレジスタ(CPSR)の現在値の読出し 111 115 */ 112 extern uint32_t current_cpsr(void); 116 extern uint32_t _kernel_current_cpsr(void); 117 #define current_cpsr() _kernel_current_cpsr() 113 118 114 119 /* 115 120 * ステータスレジスタ(CPSR)の現在値の変更 116 121 */ 117 extern void set_cpsr(uint32_t cpsr); 122 extern void _kernel_set_cpsr(uint32_t cpsr); 123 #define set_cpsr(cpsr) _kernel_set_cpsr(cpsr) 118 124 119 125 #endif /* __thumb__ */ … … 220 226 #define CP15_READ_ACTLR(reg) Asm("mrc p15, 0, %0, c1, c0, 1":"=r"(reg)) 221 227 #define CP15_WRITE_ACTLR(reg) Asm("mcr p15, 0, %0, c1, c0, 1"::"r"(reg)) 228 229 /* コプロセッサアクセス制御レジスタ */ 230 #define CP15_READ_CPACR(reg) Asm("mrc p15, 0, %0, c1, c0, 2":"=r"(reg)) 231 #define CP15_WRITE_CPACR(reg) Asm("mcr p15, 0, %0, c1, c0, 2"::"r"(reg)) 222 232 223 233 /* … … 293 303 294 304 /* ドメインアクセス制御レジスタ */ 295 #define CP15_WRITE_DACR(reg) Asm("mcr p15, 0, %0, c3, c0, 0":: 305 #define CP15_WRITE_DACR(reg) Asm("mcr p15, 0, %0, c3, c0, 0"::"r"(reg)) 296 306 297 307 /* コンテキストIDレジスタ(ARMv6以降)*/ 298 308 #if __TARGET_ARCH_ARM >= 6 299 #define CP15_WRITE_CONTEXTIDR(reg) Asm("mcr p15, 0, %0, c13, c0, 1" 309 #define CP15_WRITE_CONTEXTIDR(reg) Asm("mcr p15, 0, %0, c13, c0, 1"::"r"(reg)) 300 310 #endif /* __TARGET_ARCH_ARM >= 6 */ 301 311 … … 415 425 416 426 #endif /* __TARGET_ARCH_ARM == 7 */ 427 428 /* 429 * 浮動小数点例外制御レジスタ(FPEXC)の現在値の読出し 430 */ 431 Inline uint32_t 432 current_fpexc(void) 433 { 434 uint32_t fpexc; 435 436 Asm("vmrs %0, fpexc" : "=r"(fpexc)); 437 return(fpexc); 438 } 439 440 /* 441 * 浮動小数点例外制御レジスタ(FPEXC)の現在値の変更 442 */ 443 Inline void 444 set_fpexc(uint32_t fpexc) 445 { 446 Asm("vmsr fpexc, %0" : : "r"(fpexc)); 447 } 448 417 449 #endif /* TOPPERS_ARM_INSN_H */
Note:
See TracChangeset
for help on using the changeset viewer.