📄 cpu_support.s
字号:
; *; * TOPPERS/JSP Kernel; * Toyohashi Open Platform for Embedded Real-Time Systems/; * Just Standard Profile Kernel; * ; * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory; * Toyohashi Univ. of Technology, JAPAN; * ; * 惧淡螟侯涪荚は·笆布の (1)×(4) の掘凤か·Free Software Foundation ; * によって给山されている GNU General Public License の Version 2 に淡; * 揭されている掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェア; * を猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布·; * 网脱と钙ぶ∷することを痰浸で钓满するˉ; * (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯; * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖; * スコ〖ド面に崔まれていることˉ; * (2) 塑ソフトウェアを·ライブラリ妨及など·戮のソフトウェア倡券に蝗; * 脱できる妨で浩芹邵する眷圭には·浩芹邵に燃うドキュメント∈网脱; * 荚マニュアルなど∷に·惧淡の螟侯涪山绩·この网脱掘凤および布淡; * の痰瘦沮惮年を非很することˉ; * (3) 塑ソフトウェアを·怠达に寥み哈むなど·戮のソフトウェア倡券に蝗; * 脱できない妨で浩芹邵する眷圭には·肌のいずれかの掘凤を塔たすこ; * とˉ; * (a) 浩芹邵に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟; * 侯涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ; * (b) 浩芹邵の妨轮を·侍に年める数恕によって·TOPPERSプロジェクトに; * 鼠桂することˉ; * (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄; * 巢からも·惧淡螟侯涪荚およびTOPPERSプロジェクトを倘勒することˉ; * ; * 塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚お; * よびTOPPERSプロジェクトは·塑ソフトウェアに簇して·その努脱材墙拉も; * 崔めて·いかなる瘦沮も乖わないˉまた·塑ソフトウェアの网脱により木; * 儡弄または粗儡弄に栏じたいかなる禄巢に簇しても·その勒扦を砷わないˉ; * ; * @(#) $Id: cpu_support.S,v 1.5 2003/12/04 08:25:44 honda Exp $; * .c_mode .align 1 .global __kernel_dispatch .include "c5402dsk.h" .mmregs__kernel_dispatch: PSHM AR1 ;AR1,6,7をスタックに瘦赂 PSHM AR6 ;PCは钙び叫し箕にスタックに瘦赂される PSHM AR7 ;戮の输锦レジスタARxは瘦赂する涩妥はない LDM SP,A MVDM *(__kernel_runtsk),AR1 ;AR1 <- runtsk NOP STL A,*AR1(TCB_sp) ;タスクスタックをTCBに瘦赂 ST #dispatch_r,*AR1(TCB_pc) ;悸乖浩倡戎孟をTCBに瘦赂 B dispatcher_1dispatch_r: POPM AR7 ;レジスタを牲耽 POPM AR6 POPM AR1 B __kernel_calltex ;タスク毋嘲ル〖チンの钙び叫し .global __kernel_exit_and_dispatch__kernel_exit_and_dispatch: SSBX INTM ;充り哈み敦贿 ST #0,*(__kernel_nest) ;カ〖ネルの介袋步借妄箕のためdispatcher_1: LD *(__kernel_schedtsk),A ;schedtskがあるか々 BC dispatcher_2,AEQ ;痰ければジャンプ MVDK *(__kernel_schedtsk),*(__kernel_runtsk) ;schedtskをruntskに MVDM *(__kernel_runtsk),AR1 NOP MVDK *AR1(TCB_sp),SP ;TCBからスタックを牲耽 LD *AR1(TCB_pc),A ;TCBから悸乖浩倡戎孟を牲耽 BACC A dispatcher_2: STM #STACKTOP,SP ST #0x01,*(__kernel_nest) RSBX INTM ;充り哈み钓材 IDLE 1 ;リセットかマスクされていない充哈み略ち SSBX INTM ;充り哈み敦贿 ST #0x0,*(__kernel_nest) B dispatcher_1;; タスクの弹瓢借妄; .global __kernel_activate_r; .global _activate_r__kernel_activate_r:;_activate_r: RSBX INTM ;充り哈み钓材 POPM AR2 POPM AR3 LDM AR2,B LDM AR3,A BACC B .global _interrupt_interrupt: PSHM ST0 PSHM AL PSHM AH PSHM AG PSHM BL PSHM BH PSHM BG PSHM ST1 PSHM AR0 PSHM AR2 PSHM AR3 PSHM AR4 PSHM AR5 PSHM T PSHM TRN PSHM BK PSHM BRC PSHM RSA PSHM REA PSHM PMST LD *(__kernel_nest),A ADDM #1,*(__kernel_nest) ;充り哈みのネスト搀眶をインクリメント BC _interrupt_from_int,ANEQ LDM SP,A ;スタック掐れ仑えと STM #STACKTOP,SP ;傅のスタックポインタの PSHM AL ;瘦赂を乖う PSHM IMR MVDM *(_INT_VECNO),AR2 ;オフセット猛をAR2にセット STM #IMR,AR3 ;票じ充り哈みが部刨もかからないように LD *AR2(__kernel_int_mask_table),A ; ∶ AND *AR3,A ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -