📄 cpu_insn.h
字号:
/* * TOPPERS/JSP Kernel * Toyohashi Open Platform for Embedded Real-Time Systems/ * Just Standard Profile Kernel * * Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory * Toyohashi Univ. of Technology, JAPAN * * Copyright (C) 2004 by SEIKO EPSON Corp, JAPAN * * 惧淡螟侯涪荚は·笆布の (1)×(4) の掘凤か·Free Software Foundation * によって给山されている GNU General Public License の Version 2 に淡 * 揭されている掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェア * を猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· * 网脱と钙ぶ∷することを痰浸で钓满するˉ * (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 * スコ〖ド面に崔まれていることˉ * (2) 塑ソフトウェアを·ライブラリ妨及など·戮のソフトウェア倡券に蝗 * 脱できる妨で浩芹邵する眷圭には·浩芹邵に燃うドキュメント∈网脱 * 荚マニュアルなど∷に·惧淡の螟侯涪山绩·この网脱掘凤および布淡 * の痰瘦沮惮年を非很することˉ * (3) 塑ソフトウェアを·怠达に寥み哈むなど·戮のソフトウェア倡券に蝗 * 脱できない妨で浩芹邵する眷圭には·肌のいずれかの掘凤を塔たすこ * とˉ * (a) 浩芹邵に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟 * 侯涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ * (b) 浩芹邵の妨轮を·侍に年める数恕によって·TOPPERSプロジェクトに * 鼠桂することˉ * (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 * 巢からも·惧淡螟侯涪荚およびTOPPERSプロジェクトを倘勒することˉ * * 塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚お * よびTOPPERSプロジェクトは·塑ソフトウェアに簇して·その努脱材墙拉も * 崔めて·いかなる瘦沮も乖わないˉまた·塑ソフトウェアの网脱により木 * 儡弄または粗儡弄に栏じたいかなる禄巢に簇しても·その勒扦を砷わないˉ * */#ifndef _CPU_INSN_H_#define _CPU_INSN_H_/* * 扩告レジスタの拎侯簇眶 *//* * ステ〖タスレジスタ(PSR)の附哼猛の粕叫し */Inline UWget_psr(void){ UW psr; Asm("ld.w %0, %%psr": "=r"(psr)); return psr;}/* * ステ〖タスレジスタ(PSR)の附哼猛の恃构 */Inline voidset_psr(register UW psr){ Asm("ld.w %%psr, %0": : "r"(psr));}/* * スタックポインタ(SP)の附哼猛の粕叫し */Inline VPget_sp(void){ VP sp; Asm("ld.w %0, %%sp": "=r"(sp)); return sp;}/* * スタックポインタ(SP)の附哼猛の恃构 */Inline voidset_sp(VP sp){ Asm("ld.w %%sp, %0": : "r"(sp));}/* * プログラムカウンタ(PC)の附哼猛の恃构 */Inline voidset_pc(VP pc){ Asm("jp %0": "=r"(pc) : "0"(pc));}/* * トラップベ〖スレジスタ(TTBR)の附哼猛の粕叫し */Inline VPget_ttbr(void){#ifdef __c33std return (VP) ((volatile s1c33Bcu_t *) S1C33_BCU_BASE)->ulTtbr;#else VP ttbr; Asm("ld.w %0, %%ttbr": "=r"(ttbr)); return ttbr;#endif /* __c33std */}/* * レディキュ〖サ〖チのためのビットマップサ〖チ簇眶 * ビットマップの布疤16ビットを蝗脱し·呵布疤ビットを呵你庭黎刨に滦炳させる */#ifdef CPU_BITMAP_SEARCHInline UINTbitmap_search(UINT bitmap){ INT offset; INT bit; Asm("swap %0, %1": "=r"(bitmap): "r"(bitmap)); Asm("mirror %0, %1": "=r"(bitmap): "r"(bitmap)); Asm("scan1 %0, %1": "=r"(bit): "r"(bitmap)); if(bit != 8){ return bit; } Asm("sll %0, %1": "=r"(bitmap): "r"(bit)); offset = bit; Asm("scan1 %0, %1": "=r"(bit): "r"(bitmap)); return offset + bit;}#endif /* CPU_BITMAP_SEARCH */#endif /* _CPU_INSN_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -