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

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

?? os_cpu_a32.s

?? 非常實在的Nios—μCOS_II源代碼
?? S
?? 第 1 頁 / 共 2 頁
字號:






;*********************************************************************************************************
;                                PERFORM A CONTEXT SWITCH (From an ISR)
;                                        void OSIntCtxSw(void)
;
; Note(s): 1) Upon entry,
;             OSTCBCur     points to the OS_TCB of the task to suspend
;             OSTCBHighRdy points to the OS_TCB of the task to resume
;
;          2) The stack frame of the task to suspend looks as follows:
;
;                                   return address    <-- +1
;                                   ISTATUS           <-- +8
;                                   %g0-%g7           <-- +8
;                                   CWP_ISR(%i)       <-- +16
;                                   CWP_TASK(%i-%L)   <-- +16
;                                   ...
;                                   ...
;                                   CWP_HL-1(%i-%L)   <-- +16
;                                   CWPHILIMIT(%i-%L) <-- +16
;                                   STATUS(ISR)       <-- +24
; OSTCBHighRdy->OSTCBStkPtr -->     Compiler space    <-- 0
;
;
;          3) The stack frame of the task to resume looks as follows:
;
;                                   return address    <-- +1
;                                   ISTATUS           <-- +8
;                                   %g0-%g7           <-- +8
;                                   CWP_ISR(%i)       <-- +16
;                                   CWP_TASK(%i-%L)   <-- +16
;                                   ...
;                                   ...
;                                   CWP_HL-1(%i-%L)   <-- +16
;                                   CWPHILIMIT(%i-%L) <-- +16
;                                   STATUS(ISR)       <-- +24
; OSTCBHighRdy->OSTCBStkPtr -->     Compiler space    <-- 0
;
;*********************************************************************************************************

OSIntCtxSw:

   ; This Subroutine is called from OSTickISR();
   ; same as OSCtxSw() (see above)

   ; Call OSTaskSwHook()
    .if (OS_CPU_HOOKS_EN == 1)
      MOVI32   %g0, OSTaskSwHook@h
      CALL     %g0
      NOP
    .endif

   ; OSTCBCur = OSTCBHighRdy
      MOVI32   %g0, OSTCBHighRdy
      LD       %g1, [%g0]                    ; %g1 = HighRdy TCB
      MOVI32   %g0, OSTCBCur
      ST       [%g0], %g1

   ; OSPrioCur = OSPrioHighRdy
      MOVI32   %g2, OSPrioHighRdy
      LD       %g3, [%g2]                    ; %g3 = HighPrioRdy
      MOVI32   %g2, OSPrioCur
      ST       [%g2], %g3


   ; Switch to the highest priority task.
   ; %sp = OSTCBHighRdy->OSTCBStkPtr (%g1 = OSTCBHighRdy)
      ;MOVI32   %g0, OSTCBHighRdy          ; %g0 = &OSTCBHighRdy
      ;LD       %g1, [%g0]                 ; %g1 = &OS_TCB
      LD       %sp, [%g1]                 ; stack is the first element

      LOAD_CONTEXT

      TRET           %o7
      NOP





; ==========================================================================================
; == void OSNiosCallISR();
; ==========================================================================================
; parameters : %o0 = irq ; %o1 = UserISR
      .text
      .global   OSNiosCallISR

OSNiosCallISR:
      SAVE_CONTEXT                          ; affects (%sp, CWP, %g0, %g1, %g2, %g6 and %g7)
  ; %g7 = STATUS(Interrupt)

  ; Call OSIntEnter() or OSIntNesting++;
  ; warning !! OSIntNesting is 8bits value !!
      MOVI32    %g2, OSIntNesting           ; %g2 = &OSIntNesting
      LD        %g1, [%g2]                  ; %g1 = OSIntNesting
      EXT8D     %g1, %g2                    ; extract byte
      ADDI      %g1, 1                      ; %g1 ++
      FILL8     %r0, %g1                    ; %g0 = %g1 %g1 %g1 %g1
      ST8D      [%g2], %r0                  ; store %g1




  ; if (OSIntNesting == 1) OSTCBCur->OSTCBStkPtr = %sp
  ; %g1 = OSIntNesting
      CMPI      %g1, 1                      ; %g1 == 1
      SKPS      cc_eq                       ; %g1 == 0 ?
      BR        nextUISR                    ; no
      ;NOP                                   ; yes
      MOVI32   %g0, OSTCBCur                ; %g0 = &OSTCBHighRdy (delay slot)
      LD       %g1, [%g0]                   ; %g1 = &OS_TCB
      ST       [%g1], %sp                   ; stack is the first element

      ; extract IPRI : %g7 = STATUS(interrupt)
      LSRI      %g7, 9                      ; %g7 = XXXXXXXXXXIIIIII
      PFX       %hi(0x003F)
      AND       %g7, %lo(0x003F)            ; %g7 = 0000000000IIIIII

nextUISR:
   ; Call UserISR() from Table ( must clears the interrupt )
      MOVI32    %g1, OSNiosUserISRTable
      LSLI      %g7, regwidth/2             ; %g7 = %g7*regwidth
      ADD       %g1, %g7                    ; %g1 = ptr(UserISR@h)
      LD        %g0, [%g1]                  ; %g0 = UserISR@h
      CALL      %g0
      NOP

   ; Call OSIntExit()
      MOVI32   %g0, OSIntExit@h
      CALL     %g0
      NOP

      LOAD_CONTEXT

      TRET           %o7
      NOP











; ==========================================================================================
; == USEFULL FUNCTIONS
; ==========================================================================================
      .text
      .global getStatus
      .global getFP
      .global getSP
      .global getReg
      .global getITStatus
      .global setITStatus
      .global getHILIMIT
      .global getIPRI

   ; int getStatus()
   ; return = %o0 = %ctl0
getStatus:
      RDCTL    %o0
      JMP      %o7
      NOP


   ; int getFP()
   ; return = %o0 = %fp = %i6
getFP:
      MOV      %o0, %fp
      JMP      %o7
      NOP



   ; int getSP()
   ; return = %o0 = %sp = %o6
getSP:
      MOV      %o0, %sp
      JMP      %o7
      NOP



   ; int getReg()
   ; return = %o0 = %reg
getReg:
      MOV   %o0, %sp
      JMP   %o7
      NOP


   ; OS_CPU_SR getITStatus()
   ; return = %o0 = X0000...000     X = 1 or 0
getITStatus:
      RDCTL     %o0
      PFX       %hi(0x8000)
      AND       %o0, %lo(0x8000)
      disable_interrupt
      JMP       %o7
      NOP

   ; void setITStatus(OS_CPU_SR status)
   ; in = %o0 = status
setITStatus:
      RDCTL     %o1
      PFX       %hi(0x7FFF)
      AND       %o1, %lo(0x7FFF)
      OR        %o0, %o1
      WRCTL     %o0
      NOP
      JMP       %o7
      NOP

  ; INT16U getHIMILIT();
  ; read HI_LIMIT from %ctl2
  ; return = %o0 = 00000000000HHHHH
getHILIMIT:
      PFX       2
      RDCTL     %o0                               ; %o0 = XXXXXXHHHHHLLLLL
      LSRI      %o0, 5                            ; %o0 = XXXXXXXXXXXHHHHH
      PFX       %hi(0x001F)
      AND       %o0, %lo(0x001F)                  ; %o0 = 00000000000HHHHH
      JMP       %o7
      NOP

  ; INT16U getIPRI();
  ; read IPRI from %ctl0
  ; return = %o0 = IPRI
getIPRI:
      RDCTL     %o0
      LSRI      %o0, 9                      ; %g7 = XXXXXXXXXXIIIIII
      PFX       %hi(0x003F)
      AND       %o0, %lo(0x003F)            ; %g7 = 0000000000IIIIII
      JMP       %o7
      NOP

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性xxxxxxxx| 一区二区中文字幕在线| 欧美—级在线免费片| 亚洲午夜视频在线观看| 国产高清无密码一区二区三区| 91丨国产丨九色丨pron| 久久综合久久综合九色| 视频在线观看一区| 91丨九色丨蝌蚪丨老版| 久久一区二区视频| 免费成人性网站| 欧美专区亚洲专区| 成人欧美一区二区三区黑人麻豆 | 久久久99精品久久| 日韩中文欧美在线| 欧美伊人久久久久久午夜久久久久| 精品999在线播放| 日韩精品免费专区| 欧美综合亚洲图片综合区| 中文字幕在线视频一区| 国产精品一线二线三线| 4hu四虎永久在线影院成人| 亚洲人成电影网站色mp4| 成人免费的视频| 26uuu亚洲| 久久精工是国产品牌吗| 6080亚洲精品一区二区| 亚洲成人动漫在线免费观看| 91久久香蕉国产日韩欧美9色| 中文字幕日韩精品一区| 99久久亚洲一区二区三区青草| 国产丝袜美腿一区二区三区| 精品中文字幕一区二区小辣椒 | 色欧美日韩亚洲| 亚洲婷婷综合久久一本伊一区| 国产盗摄视频一区二区三区| 久久亚洲一区二区三区四区| 国产美女视频一区| 国产日本亚洲高清| 国产精品影视在线| 国产精品国产自产拍高清av| 9色porny自拍视频一区二区| 国产精品久久久久国产精品日日 | 久久草av在线| 欧美精品一区二区高清在线观看| 国内一区二区在线| 国产亚洲va综合人人澡精品 | 麻豆精品一区二区av白丝在线 | 在线这里只有精品| 亚洲一区二区三区影院| 欧美夫妻性生活| 久久精品久久精品| 国产亚洲短视频| 色婷婷精品大视频在线蜜桃视频| 亚洲一区二区三区四区的| 在线不卡的av| 国产精品自拍在线| 亚洲欧美色图小说| 91精品国产91综合久久蜜臀| 精品一区二区三区在线视频| 国产精品人人做人人爽人人添| 99国产精品久久久久久久久久 | 欧美成人三级电影在线| 国产一区欧美二区| 亚洲免费在线视频| 51精品视频一区二区三区| 国产一区二区按摩在线观看| 成人欧美一区二区三区| 欧美高清精品3d| 国产成人欧美日韩在线电影| 亚洲精品福利视频网站| 91精品国产综合久久小美女| 成人午夜大片免费观看| 午夜精品福利久久久| 精品国产一区二区三区不卡| 91啪亚洲精品| 国模娜娜一区二区三区| 日韩一区欧美一区| 欧美videos中文字幕| 91老师片黄在线观看| 老司机午夜精品99久久| 伊人婷婷欧美激情| 2021国产精品久久精品| 在线观看欧美精品| 国产jizzjizz一区二区| 丝袜美腿亚洲一区二区图片| 欧美国产精品中文字幕| 日韩视频免费观看高清完整版 | 国产成人综合精品三级| 午夜在线成人av| 中文字幕一区二区三区色视频| 日韩小视频在线观看专区| 91久久免费观看| 大桥未久av一区二区三区中文| 奇米色一区二区| 亚洲一区二区三区小说| 国产精品久久久久aaaa樱花 | 91免费版在线看| 国产黄色精品网站| 捆绑紧缚一区二区三区视频| 亚洲小说欧美激情另类| 亚洲视频一二三区| 国产欧美日韩亚州综合| 欧美va日韩va| 欧美高清视频在线高清观看mv色露露十八| av不卡免费电影| 国产成人精品www牛牛影视| 美女视频黄免费的久久 | 欧美日韩一卡二卡三卡| 91免费精品国自产拍在线不卡| 国产成人啪免费观看软件| 国内不卡的二区三区中文字幕 | 中文字幕中文字幕一区二区| 国产视频一区在线观看| 国产婷婷色一区二区三区四区 | 欧美日韩小视频| 欧美日韩亚洲另类| 欧美亚洲免费在线一区| 欧美在线视频你懂得| 欧洲视频一区二区| 91成人国产精品| 欧美麻豆精品久久久久久| 欧美日韩国产影片| 91精品国产色综合久久不卡蜜臀| 91麻豆精品91久久久久同性| 制服.丝袜.亚洲.另类.中文| 在线91免费看| 精品国产a毛片| 国产免费观看久久| 国产精品美女久久久久久2018| 国产精品久久久久永久免费观看| 综合久久久久久久| 一区二区在线观看av| 午夜欧美大尺度福利影院在线看 | 亚洲精品福利视频网站| 亚洲成av人片在www色猫咪| 日本一不卡视频| 精品一区二区三区在线视频| 国产99精品视频| 91蝌蚪porny| 91精品国产欧美日韩| ww久久中文字幕| 亚洲日本在线天堂| 天堂一区二区在线免费观看| 国产一区二区女| 色又黄又爽网站www久久| 在线观看91精品国产麻豆| 久久五月婷婷丁香社区| 最新不卡av在线| 日韩av电影一区| 国产91精品一区二区| 欧美三级韩国三级日本三斤| 精品美女一区二区| 亚洲天堂a在线| 另类欧美日韩国产在线| 成人免费视频视频在线观看免费 | 波多野结衣亚洲| 欧美电影在线免费观看| 欧美激情在线观看视频免费| 夜夜爽夜夜爽精品视频| 韩日av一区二区| 欧美视频一区二| 久久男人中文字幕资源站| 亚洲一区二区三区不卡国产欧美| 国产精品自拍网站| 欧美日韩久久不卡| 中文字幕制服丝袜一区二区三区| 秋霞电影网一区二区| 一本大道av伊人久久综合| 国产亚洲一区二区三区在线观看 | 综合欧美亚洲日本| 久久国产精品色| 精品婷婷伊人一区三区三| 欧美激情一区二区三区在线| 日韩精品电影在线观看| 91香蕉视频mp4| 国产精品水嫩水嫩| 极品少妇xxxx精品少妇| 91麻豆精品国产自产在线| 亚洲日穴在线视频| 粉嫩av一区二区三区| 精品国产区一区| 美女网站色91| 欧美一区二区视频免费观看| 亚洲一区二区三区小说| av亚洲精华国产精华| 国产性色一区二区| 国产精品一区二区不卡| 欧美大片日本大片免费观看| 午夜激情综合网| 欧美性大战久久| 亚洲午夜电影在线| 欧美中文字幕一二三区视频| 亚洲六月丁香色婷婷综合久久 | 91精品中文字幕一区二区三区| 亚洲精品成人精品456| 99久久久免费精品国产一区二区| 国产无遮挡一区二区三区毛片日本| 精一区二区三区| 26uuuu精品一区二区|