亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ucosmcfa.s

?? uCOSII code for Coldfire processor
?? S
字號:
/********************************************************************/
/**  Unit : uCOSMCFa                                               **/
/**                                                                **/
/**  Description : This unit contains the assembler functions for  **/
/**  the ColdFire port of uC/OS. These perform context switching   **/
/**  and handle the timer ticks.                                   **/
/**                                                                **/
/**  Version History :                                             **/
/**                                                                **/
/**  A0.01     Initial version started                   15/09/97  **/
/**                                                                **/
/** Copyright (c) 1997 David Fiddes, D.J.Fiddes@hw.ac.uk           **/
/********************************************************************/

/********************************************************************/
/**  A note for the interested:                                    **/ 
/**                                                                **/     
/**  I've use the movem.l (%a7),%d0-%d7/%a0-%a6, lea 60(%a7)%a7    **/ 
/**  construct in place of the traditional 68xxx                   **/
/**  movem.l (%a7)+,%d0-%d7/%a0-%a6. It is perfectly in order to   **/
/**  push/pop individual registers using movem.l (%a7)+,%d2 , etc. **/
/**  but it's a bit slower (and more verbose)                      **/
/**                                                                **/     
/**  The lea instruction is required because the ColdFire can't    **/     
/**  push multiple registers directly to the stack...              **/     
/********************************************************************/
            .text
            .global OSStartHighRdy
            .global OSCtxSw
            .global OSIntCtxSw
            .global OSTickISR

            .extern  OSIntEnter
            .extern  OSIntExit
            .extern  OSTimeTick
            .extern  OSTCBCur
            .extern  OSTCBHighRdy


/********************************************************************/
/**  Procedure : OSStartHighRdy                                    **/
/**                                                                **/
/**  The procedure gets the highest priority task then loads its   **/
/**  stack before restoring all of the registers and doing an RTE  **/
/**  to actually start the task. Called directly from uC/OS        **/
/********************************************************************/
OSStartHighRdy:

  move.l   (OSTCBHighRdy),%a1   |Get highest prio. task
  move.l   %a1,(OSTCBCur)
  move.l   (%a1),%a7            |Get ptr to top of stack

  movem.l (%a7),%d0-%d7/%a0-%a6 |Store all the regs
  lea     60(%a7),%a7           |Advance the stack pointer

  rte                           |Return to task


/********************************************************************/
/**  Procedure : OSCtxSw                                           **/
/**                                                                **/
/**  The procedure is installed as an interrupt handler and called **/
/**  using a TRAP instruction within the uC/OS scheduler to swap   **/
/**  contexts at the task level.                                   **/
/********************************************************************/
OSCtxSw:
  lea      -60(%a7),%a7
  movem.l  %d0-%d7/%a0-%a6,(%a7)


  move.l   (OSTCBCur),%a1     |Save stack ptr in TCB
  move.l   %a7,(%a1)

  move.l   (OSTCBHighRdy),%a1 |Point to HI Prio. Task Rdy
  move.l   %a1,(OSTCBCur)     |This is now current TCB

  move.l   (%a1),%A7          |Get new task's stack ptr
  
  movem.l  (%a7),%d0-%d7/%a0-%a6
  lea      60(%a7),%a7

  rte                         |Return to new task
  

/********************************************************************/
/**  Procedure : OSIntCtxSw                                        **/
/**                                                                **/
/**  The procedure is called by when the uC/OS wants to return to  **/
/**  a different task at interrupt time. Used primarily within the **/
/**  timer tick interrupt.                                         **/
/********************************************************************/
OSIntCtxSw:

  adda.l   #16,%a7 |For C -O2 -> -O4 optimisation level
  
|  adda.l   #20,%a7 |For unoptimsed C (Something to do with frame pointers being optimised out in OSIntExit)
  
/*
* Note: the stack adjustment compensates for the following:
*
*   OSIntExit call                               4
*   OSIntExit stack frame adjust                 4 <- goes to 0 for -O2
*   OSIntExit locals 3 * 4 =                     8
*   OSIntCtxSw call                              4
*                                              --- 
*                                               20 or 16
*
*   The interrupt context save and the full register set must
*   be on the stack in the correct order prior to the OSIntExit call
*/

  move.l   (OSTCBCur),%a1     |Save stack ptr in TCB
  move.l   %a7,(%a1)

  move.l   (OSTCBHighRdy),%a1 |Point to HI Prio. Task Rdy
  move.l   %a1,(OSTCBCur)     |This is now current TCB

  move.l   (%a1),%a7          |Get new task's stack ptr

  movem.l  (%a7),%d0-%d7/%a0-%a6
  lea      60(%a7),%a7

  rte                         |Return to new task


/********************************************************************/
/**  Procedure : OSTickISR                                         **/
/**                                                                **/
/**  The procedure is installed as the timer tick ISR and called   **/
/**  each time TIMER1 on the MCF5206 reaches it's reference value. **/
/**  It stores the current context before calling the uC/OS int    **/
/**  nesting logic and timer tick routine which can cause the      **/
/**  context to change. Use this as an example of how to write     **/
/**  ISRs in uC/OS.                                                **/
/********************************************************************/
OSTickISR:

  lea      -60(%a7),%a7
  movem.l  %d0-%d7/%a0-%a6,(%a7)
  
  move.l   #0x10000111,%a0 |Reset the timer chip (hard coded Timer1.TER reg value - bad)
  move.b   #0x03,(%a0)

  jsr      OSIntEnter
  jsr      OSTimeTick
  jsr      OSIntExit

  movem.l  (%a7),%d0-%d7/%a0-%a6
  lea      60(%a7),%a7
 
  rte

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天堂av在线一区| 免费成人你懂的| 国产日韩综合av| 日韩精品一区二区三区视频播放 | 久久精子c满五个校花| 91 com成人网| 日韩三级中文字幕| 久久久久久久一区| 国产精品久久久久久户外露出| 国产精品网曝门| 亚洲欧美激情小说另类| 午夜天堂影视香蕉久久| 日本午夜精品一区二区三区电影| 午夜久久久久久久久| 男女视频一区二区| 国产精品18久久久| 色噜噜偷拍精品综合在线| 在线亚洲欧美专区二区| 91精品国产日韩91久久久久久| 3atv在线一区二区三区| 精品国产伦一区二区三区免费| 久久久亚洲精品石原莉奈| 国产精品福利一区| 日韩中文字幕1| 从欧美一区二区三区| 91福利国产精品| 欧美一区二区在线播放| 日本一区二区三区电影| 亚洲成人在线免费| 国产成人免费在线| 欧美系列一区二区| 久久综合999| 亚洲v精品v日韩v欧美v专区| 国产精品一区二区黑丝| 欧美在线你懂得| 久久精品这里都是精品| 午夜在线成人av| 成人黄色一级视频| 日韩一级二级三级精品视频| 中文字幕免费不卡在线| 日韩电影在线观看网站| 北条麻妃国产九九精品视频| 91极品视觉盛宴| 久久精品亚洲精品国产欧美kt∨| 亚洲国产美女搞黄色| 国产成人av电影在线| 欧美老肥妇做.爰bbww视频| 国产精品午夜春色av| 免费高清成人在线| 在线观看欧美黄色| **欧美大码日韩| 国产精品一区二区x88av| 欧美日韩一级片在线观看| 中文字幕 久热精品 视频在线| 亚洲成人精品在线观看| 99久久99久久综合| 国产丝袜在线精品| 激情综合亚洲精品| 日韩欧美精品在线| 亚洲一区二区在线视频| 99精品在线免费| 国产午夜久久久久| 国产一区 二区| 久久亚洲一级片| 精品一区二区三区免费观看 | 久久久久久久综合| 久久精品国内一区二区三区| 在线一区二区视频| 亚洲丝袜美腿综合| eeuss鲁片一区二区三区在线看| 精品欧美乱码久久久久久1区2区 | 日本一区二区三区四区| 麻豆成人在线观看| 久久美女艺术照精彩视频福利播放| 日日夜夜免费精品| 欧美一区二区视频在线观看2020| 亚州成人在线电影| 欧美高清你懂得| 日韩在线一区二区三区| 在线综合亚洲欧美在线视频 | 久久综合色8888| 国产剧情在线观看一区二区| 精品美女在线播放| 国产一区二区网址| 国产精品色哟哟| 91尤物视频在线观看| 亚洲欧美日韩中文字幕一区二区三区| 91亚洲永久精品| 亚洲国产一区二区三区| 91精品久久久久久久99蜜桃| 免费在线看成人av| 国产视频一区二区在线观看| av午夜一区麻豆| 亚洲成人免费视频| 日韩视频免费观看高清在线视频| 国模少妇一区二区三区| 国产三级精品三级| 91色在线porny| 日本精品视频一区二区| 亚洲第一福利视频在线| 91精品国产日韩91久久久久久| 国产专区欧美精品| 亚洲欧美电影院| 欧美大片日本大片免费观看| 高清久久久久久| 亚洲综合丝袜美腿| 欧美mv日韩mv国产| 99精品视频中文字幕| 日韩av电影天堂| 国产女主播一区| 91精品福利在线一区二区三区| 国产精品亚洲综合一区在线观看| 亚洲精品国产一区二区精华液| 欧美区一区二区三区| 国产成人免费xxxxxxxx| 亚洲第一福利一区| 中文字幕一区二区视频| 日韩一二三四区| 色视频一区二区| 国产在线播放一区三区四| 亚洲精品成人天堂一二三| 国产偷国产偷亚洲高清人白洁| 日本韩国一区二区三区视频| 国内精品国产成人| 婷婷综合另类小说色区| 中文字幕中文字幕在线一区| 日韩亚洲欧美在线观看| 欧美一a一片一级一片| 国产成人高清视频| 美女视频一区在线观看| 亚洲综合在线五月| 国产精品入口麻豆九色| 欧美成人a∨高清免费观看| 91福利在线播放| 不卡免费追剧大全电视剧网站| 精品一区中文字幕| 婷婷国产v国产偷v亚洲高清| 亚洲欧洲综合另类| 亚洲婷婷在线视频| 欧美国产精品一区二区| 精品国产免费久久| 日韩亚洲欧美综合| 日韩一区二区电影在线| 欧美女孩性生活视频| 日本韩国欧美在线| 99久久亚洲一区二区三区青草 | 精品国偷自产国产一区| 日韩欧美一区二区三区在线| 欧美日韩激情一区二区三区| 91久久精品国产91性色tv| 94-欧美-setu| 91一区二区在线观看| 91论坛在线播放| 99久久精品国产一区二区三区| 成人性生交大合| aaa欧美色吧激情视频| 91视频免费观看| 色婷婷久久综合| 欧美日韩成人一区| 欧美一级理论性理论a| 在线电影院国产精品| 日韩欧美亚洲另类制服综合在线 | 国产激情偷乱视频一区二区三区| 精品一区二区国语对白| 黄网站免费久久| 成人激情免费视频| 欧洲一区在线观看| 日韩亚洲电影在线| 久久久精品影视| 亚洲视频在线观看三级| 亚洲大片一区二区三区| 日本视频免费一区| 国产xxx精品视频大全| 97精品国产97久久久久久久久久久久| 一本一道久久a久久精品| 欧美亚洲综合网| 欧美大片国产精品| 国产精品美女久久久久久久久久久| 亚洲欧洲日产国码二区| 日韩电影免费一区| 丁香一区二区三区| 欧美放荡的少妇| 久久久久久电影| 亚洲成人久久影院| 丁香激情综合国产| 欧美肥妇毛茸茸| 国产欧美日韩视频一区二区| **网站欧美大片在线观看| 午夜久久久久久久久久一区二区| 国产激情91久久精品导航| 欧美日韩一区二区三区不卡| 337p粉嫩大胆噜噜噜噜噜91av | 国产精品美女www爽爽爽| 亚洲自拍偷拍麻豆| 国产99一区视频免费| 在线不卡a资源高清| 国产精品国产三级国产专播品爱网 | 色狠狠av一区二区三区| 精品理论电影在线| 亚洲一区二区三区激情|