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

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

?? os_cpu_a.s

?? 一個外國牛人做的ucos2向mcf5307的移植
?? S
字號:
;/*  os_cpu.h
; *
; *	Motorola Coldfire MCF5307 port to MicroC/OS-II
; *
; *  Ross Berteig
; *  Cheshire Engineering Corp
; *  650 Sierra Madre Villa, Suite 201
; *  Pasadena  CA 91107
; *  +1-626-351-5493       +1-626-351-8645 FAX
; *  Ross@CheshireEng.com, www.CheshireEng.com
; *
; *  Copyright (C) 1998 Cheshire Engineering Corporation.
; *  Based on a port to uCOS version 1.x by David Fiddes.
; *  Portions Copyright (C) 1997 David Fiddes, D.J.Fiddes@hw.ac.uk
; *  Anything that no longer works is probably not his fault.
; */
;
;
;  A note for the interested:
;
;  David uses 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
	    .global _CPUFormatError

	    .extern  _OSIntEnter
	    .extern  _OSIntExit
	    .extern  _OSTimeTick
	    .extern  _OSTCBCur
	    .extern  _OSTCBHighRdy
	    .extern  _OSPrioCur
	    .extern  _OSPrioHighRdy
	    .extern  _OSTaskSwHook
	    .extern  _OSRunning
	    
	    .extern  ___MBAR

;  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:
  jsr      _OSTaskSwHook		;Call the hook proc
  moveq    #1,d0
  move.b   d0,(_OSRunning)
  move.l   (_OSTCBHighRdy),a1		;Get highest prio. task
  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 : 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.					    
;
;  Offset the stack pointer to get back to an exception frame, then
;  simply jump to OSCtxSw() to do the rest of the details.  We skip the
;  register save at the top of OSCtxSw() because the interrupt routine
;  itself has already saved all the registers in the right spot after
;  the exception frame.
;
;  The stack adjustment compensates for the following:
;
;    OSIntExit call				  4
;    OSIntExit stack frame adjust		  4 <- goes to 0 for -O2
;    OSIntCtxSw call				  4
;						--- 
;						 12 or 8
;  The DiabData compiler option -X36=1 will force the use of stack
;  frames regardless of the optimization settings. The default if 
;  any optimizations are on is to avoid a stack frame in any function
;  with no local variables on the stack.

_OSIntCtxSw:
   adda.l   #12,a7			; Compensate stack pointer
   bra CtxSwTail			; Handle the context switch,


;  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.				    
;
;  Initialization must insert this routine into the vector table at
;  vector 46 (offset 0xb8) to correspond to the definition of the
;  OS_TASK_SW() macro in os_cpu.h as TRAP #14.

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

CtxSwTail:
  move.l   (_OSTCBCur),a1		;Save stack ptr in TCB
  move.l   a7,(a1)

  jsr      _OSTaskSwHook		; Call the hook proc

  move.l   (_OSTCBHighRdy),a1		;Point to HI Prio. Task Rdy
  move.l   a1,(_OSTCBCur)		;This is now current TCB
  move.b   (_OSPrioHighRdy),d0		;And track the hi prio value
  move.b   d0,(_OSPrioCur)		;   as well for faster compares

  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 MCF5307 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.
;
;  Notice that all ISRs *must* leave the same stack context
;  at the time of the call to OSIntExit() since if a context
;  switch does occur, OSIntCtxSw() must be able to find this
;  frame.  This probably means that other ISRs which have
;  local variables and do more work should follow this model of
;  calling a worker function similar to OSTimeTick() so that
;  the exception stack frame is left undisturbed.			    
;
;  Initialization must insert this routine into the vector table at
;  the vector 24+level (offset 0x64 + 4*level) where level is the 
;  irq priority level assigned to the timer tick.  For example, 
;  assigning the timer to level 5 would correspond to vector 29 
;  at offset 0x74 in the table.  The level is assigned with the
;  ICR1 register in the SIM module.

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

  ;Reset the timer chip (hard coded Timer1.TER reg value - bad)
  move.l   #___MBAR+0x151,a0 
  move.b   #0x03,(a0)

  jsr	   _OSIntEnter
  jsr	   _OSTimeTick
  jsr	   _OSIntExit

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


;  Procedure:  CPUFormatError
;
;  Exception handler for frame format errors, which should never 
;  happen unless some ISR fails to follow the rules and a context
;  switch attempts to do an RTE with A7 pointing to the wrong place.
;
;  This version simply halts the CPU.  A better response would be
;  to figure out the context of the fault and produce a diagnostic
;  message somewhere, but we are an embedded system...
;
;  Initialization must insert this routine into the vector table at
;  vector 14 (offset 0x38).

_CPUFormatError:
  nop					; breakpoint or patch fodder
  nop
  nop
  nop
  halt					; nothing else to do here

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕欧美一| 国产亚洲欧洲997久久综合 | xf在线a精品一区二区视频网站| 亚洲高清一区二区三区| 欧美日韩一级二级| 久久国产人妖系列| 国产天堂亚洲国产碰碰| 色婷婷香蕉在线一区二区| 一区二区三区欧美视频| 91麻豆精品国产自产在线| 免费成人美女在线观看| 日本一区二区三区免费乱视频| 91丨国产丨九色丨pron| 午夜电影一区二区三区| 2022国产精品视频| aaa欧美大片| 日韩电影在线观看网站| 久久久久久久久久久久电影| 成人激情动漫在线观看| 一个色妞综合视频在线观看| 欧美一区二区三区播放老司机| 国产精品一二三区| 亚洲免费三区一区二区| 精品少妇一区二区三区日产乱码| 国产毛片精品视频| 一区二区三区免费观看| 久久精品一级爱片| 欧美天堂亚洲电影院在线播放| 久久精品国产一区二区三区免费看| 国产精品久久久久久久久久久免费看| 欧美日韩综合不卡| 国产精品一区二区在线观看网站 | 亚洲高清免费在线| 久久综合成人精品亚洲另类欧美| 色先锋久久av资源部| 另类欧美日韩国产在线| 中文字幕亚洲在| 欧美mv日韩mv| 欧美酷刑日本凌虐凌虐| 99精品在线观看视频| 久久国产视频网| 一区二区三区.www| 亚洲精品一线二线三线| 欧美日韩视频在线一区二区| 国产精品996| 日日夜夜精品免费视频| 樱花影视一区二区| 中文幕一区二区三区久久蜜桃| 在线综合视频播放| 色视频一区二区| 成人福利在线看| 国内精品伊人久久久久av影院 | 欧美日韩一区中文字幕| 国产精品69久久久久水密桃| 强制捆绑调教一区二区| 亚洲乱码国产乱码精品精可以看| 久久久久久久久伊人| 欧美一区二区三区啪啪| 在线观看日韩av先锋影音电影院| 成人午夜短视频| 国内精品写真在线观看| 日日骚欧美日韩| 午夜成人免费视频| 亚洲国产人成综合网站| 又紧又大又爽精品一区二区| 亚洲欧洲另类国产综合| 久久精品夜色噜噜亚洲a∨| 欧美成人三级电影在线| 91精品国产福利在线观看| 在线播放中文字幕一区| 欧美美女一区二区在线观看| 欧美日韩一区二区在线观看视频 | 成人黄色777网| 丁香亚洲综合激情啪啪综合| 91精品国产91久久久久久一区二区 | 激情文学综合丁香| 久草精品在线观看| 蜜桃一区二区三区在线| 青草av.久久免费一区| 蜜臂av日日欢夜夜爽一区| 日韩电影在线观看电影| 日本欧美一区二区三区| 免费美女久久99| 久久91精品久久久久久秒播| 看国产成人h片视频| 久久不见久久见中文字幕免费| 乱一区二区av| 国产91精品久久久久久久网曝门| 国产精品亚洲专一区二区三区| 国产成人精品一区二区三区网站观看 | 青娱乐精品在线视频| 日本在线不卡一区| 蜜桃av一区二区| 韩国在线一区二区| 成人永久aaa| 色婷婷国产精品| 91精品国产欧美一区二区成人| 日韩久久精品一区| 国产精品美女一区二区| 亚洲精品高清在线观看| 日韩电影在线观看电影| 国产在线精品一区二区三区不卡| 成人伦理片在线| 欧美在线视频不卡| 精品国产乱码久久久久久免费| 国产精品久久久久久户外露出| 亚洲国产一区二区a毛片| 毛片av中文字幕一区二区| 国产91高潮流白浆在线麻豆| 色婷婷综合五月| 欧美成人国产一区二区| 亚洲欧洲三级电影| 麻豆一区二区三区| 91美女蜜桃在线| 日韩一本二本av| 亚洲区小说区图片区qvod| 爽好久久久欧美精品| 国产精品91一区二区| 欧美日韩一级二级| 国产亚洲自拍一区| 一区二区三区四区国产精品| 久久国产精品无码网站| 日本精品一区二区三区四区的功能| 日韩视频一区二区在线观看| 日韩毛片视频在线看| 精品一区二区三区欧美| 欧美亚洲免费在线一区| 国产精品免费看片| 日本中文字幕不卡| 91精品1区2区| 日本一区二区视频在线观看| 日韩中文字幕区一区有砖一区| 丁香啪啪综合成人亚洲小说 | 99这里只有久久精品视频| 欧美精品三级日韩久久| 日韩一区欧美小说| 久久精品国产999大香线蕉| 在线这里只有精品| 国产精品毛片高清在线完整版| 精品亚洲免费视频| 91精品啪在线观看国产60岁| 亚洲与欧洲av电影| a亚洲天堂av| 欧美高清在线精品一区| 精品亚洲国内自在自线福利| 91精品国产91久久久久久一区二区 | 亚洲精品一区二区三区香蕉| 亚洲一二三四区不卡| eeuss鲁一区二区三区| 久久久不卡网国产精品二区| 青青草一区二区三区| 欧美日韩精品欧美日韩精品一| 亚洲精品视频自拍| 91蝌蚪porny| 国产精品网站在线播放| 国产精品一区一区| 久久精品欧美一区二区三区不卡| 精品在线视频一区| 欧美成人猛片aaaaaaa| 日本美女一区二区三区视频| 8x8x8国产精品| 午夜视频一区二区三区| 欧美唯美清纯偷拍| 亚洲成a人v欧美综合天堂| 欧美性感一类影片在线播放| 亚洲自拍与偷拍| 欧美美女直播网站| 免费xxxx性欧美18vr| 日韩欧美一卡二卡| 久久国产精品色| 久久一夜天堂av一区二区三区| 狠狠色狠狠色合久久伊人| 久久久久9999亚洲精品| 成人综合日日夜夜| 亚洲欧洲日韩女同| 欧美天堂一区二区三区| 日韩高清不卡一区二区三区| 日韩一区二区三区电影在线观看| 美女在线视频一区| 国产色综合久久| 97se亚洲国产综合在线| 一区二区三区欧美日| 在线不卡a资源高清| 麻豆一区二区三| 中文字幕国产一区| 日本电影欧美片| 日本午夜精品视频在线观看| 精品久久久久av影院 | 秋霞午夜av一区二区三区| 欧美zozozo| 成人精品小蝌蚪| 亚洲一级片在线观看| 欧美大白屁股肥臀xxxxxx| 国产成人亚洲综合a∨猫咪| 亚洲视频在线一区观看| 欧美放荡的少妇| 国产成人av网站| 亚洲综合激情网| 久久五月婷婷丁香社区| 色综合色综合色综合色综合色综合|