⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tasksw.lst.svn-base

📁 我们自己开发的一个OSEK操作系统!不知道可不可以?
💻 SVN-BASE
字号:
GAS LISTING /tmp/ccGJaoaJ.s 			page 1   1              	# 1 "OS/Task/TaskSw.S"   2              	# 1 "/home/zzxiong/osek//"   1              	.include "os_cpu_a.inc"
   1              	...   0              	   0              	   1              	#include "ppc_asm.h"
   2              	/*
   3              	 *                                         STACK FRAME DEFINITION
   4              	 */
   5              	
   6              	    .equ XR30    ,0
   7              	    .equ XR1     ,XR30+4
   8              	    .equ XR2     ,XR1+4
   9              	    .equ XR3     ,XR2+4    
  10              	    .equ XR4     ,XR3+4
  11              	    .equ XR5     ,XR4+4
  12              	    .equ XR6     ,XR5+4
  13              	    .equ XR7     ,XR6+4
  14              	    .equ XR8     ,XR7+4
  15              	    .equ XR9     ,XR8+4
  16              	    .equ XR10    ,XR9+4
  17              	    .equ XR11    ,XR10+4
  18              	    .equ XR12    ,XR11+4
  19              	    .equ XR13    ,XR12+4
  20              	    .equ XR14    ,XR13+4
  21              	    .equ XR15    ,XR14+4
  22              	    .equ XR16    ,XR15+4
  23              	    .equ XR17    ,XR16+4
  24              	    .equ XR18    ,XR17+4
  25              	    .equ XR19    ,XR18+4
  26              	    .equ XR20    ,XR19+4
  27              	    .equ XR21    ,XR20+4
  28              	    .equ XR22    ,XR21+4
  29              	    .equ XR23    ,XR22+4
  30              	    .equ XR24    ,XR23+4
  31              	    .equ XR25    ,XR24+4
  32              	    .equ XR26    ,XR25+4
  33              	    .equ XR27    ,XR26+4
  34              	    .equ XR28    ,XR27+4
  35              	    .equ XR29    ,XR28+4
  36              	    .equ XR31    ,XR29+4
  37              	    .equ XR0     ,XR31+4
  38              	    
  39              	    .equ XSRR0   ,XR0+4
  40              	    .equ XSRR1   ,XSRR0+4
  41              	    .equ XCTR  ,XSRR1+4 
  42              	    .equ XXER    ,XCTR+4
  43              	    .equ XCR     ,XXER+4
  44              	    .equ XLR     ,XCR+4
  45              	    .equ XMSR    ,XLR+4
  46              	
  47              	    .equ STACK_FRAME_SIZE   ,XMSR+4
  48              	    
  49              	    
  50              	/*
  51              	 *                                         PROLOGUE DEFINITION
GAS LISTING /tmp/ccGJaoaJ.s 			page 2  52              	 */
  53              	prologue:       .macro
  54              	        stwu    r30, -STACK_FRAME_SIZE(r30)
  55              	        stw     r0,  XR0(r30)     
  56              	        stw	    r1,  XR1(r30)
  57              	        stw     r2,  XR2(r30)             /* store GPR as 32bit Register*/
  58              	        stw     r3,  XR3(r30)
  59              	        stw     r4,  XR4(r30)
  60              	        stw     r5,  XR5(r30)
  61              	        stw     r6,  XR6(r30)
  62              	        stw     r7,  XR7(r30)
  63              	        stw     r8,  XR8(r30)
  64              	        stw     r9,  XR9(r30)
  65              	        stw     r10, XR10(r30)
  66              	        stw     r11, XR11(r30)
  67              	        stw     r12, XR12(r30)
  68              	        stw     r13, XR13(r30)
  69              	        stw     r14, XR14(r30)
  70              	        stw     r15, XR15(r30)
  71              	        stw     r16, XR16(r30)
  72              	        stw     r17, XR17(r30)
  73              	        stw     r18, XR18(r30)
  74              	        stw     r19, XR19(r30)
  75              	        stw     r20, XR20(r30)
  76              	        stw     r21, XR21(r30)
  77              	        stw     r22, XR22(r30)
  78              	        stw     r23, XR23(r30)
  79              	        stw     r24, XR24(r30)
  80              	        stw     r25, XR25(r30)
  81              	        stw     r26, XR26(r30)
  82              	        stw     r27, XR27(r30)
  83              	        stw     r28, XR28(r30)
  84              	        stw     r29, XR29(r30)
  85              	        stw     r31, XR31(r30)
  86              	
  87              	        mfmsr   r0
  88              	        stw     r0,  XMSR(r30)
  89              	
  90              	        mfspr   r0,  SRR0
  91              	        stw     r0,  XSRR0(r30)
  92              	
  93              	        mfspr   r0,  SRR1
  94              	        stw     r0,  XSRR1(r30)
  95              	
  96              	        mflr    r0
  97              	        stw     r0,  XLR(r30)
  98              	
  99              	        mfctr   r0
 100              	        stw     r0,  XCTR(r30)
 101              	
 102              	        mfxer   r0
 103              	        stw     r0,  XXER(r30)
 104              	
 105              	        mfcr    r0
 106              	        stw     r0,  XCR(r30)
 107              	       .endm 
 108              	/*
GAS LISTING /tmp/ccGJaoaJ.s 			page 3 109              	 *                                         EPILOGUE DEFINITION
 110              	 */
 111              	epilogue:       .macro
 112              	/*        wrteei  0   */
 113              	        lwz     r1,  XR1(r30)
 114              	        lwz     r2,  XR2(r30)                       /* load GPR as 32bit Register*/
 115              	        lwz     r3,  XR3(r30)
 116              	        lwz     r4,  XR4(r30)
 117              	        lwz     r5,  XR5(r30)
 118              	        lwz     r6,  XR6(r30)
 119              	        lwz     r7,  XR7(r30)
 120              	        lwz     r8,  XR8(r30)
 121              	        lwz     r9,  XR9(r30)
 122              	        lwz     r10, XR10(r30)
 123              	        lwz     r11, XR11(r30)
 124              	        lwz     r12, XR12(r30)
 125              	        lwz     r13, XR13(r30)
 126              	        lwz     r14, XR14(r30)
 127              	        lwz     r15, XR15(r30)
 128              	        lwz     r16, XR16(r30)
 129              	        lwz     r17, XR17(r30)
 130              	        lwz     r18, XR18(r30)
 131              	        lwz     r19, XR19(r30)
 132              	        lwz     r20, XR20(r30)
 133              	        lwz     r21, XR21(r30)
 134              	        lwz     r22, XR22(r30)
 135              	        lwz     r23, XR23(r30)
 136              	        lwz     r24, XR24(r30)
 137              	        lwz     r25, XR25(r30)
 138              	        lwz     r26, XR26(r30)
 139              	        lwz     r27, XR27(r30)
 140              	        lwz     r28, XR28(r30)
 141              	        lwz     r29, XR29(r30)
 142              	        lwz     r31, XR31(r30)
 143              	
 144              	        lwz     r0,  XCR(r30)
 145              	        mtcrf   0xff,r0
 146              	        lwz     r0,  XXER(r30)
 147              	        mtxer   r0
 148              	        lwz     r0,  XCTR(r30)
 149              	        mtctr   r0
 150              	        lwz     r0,  XLR(r30)
 151              	        mtlr    r0
 152              	
 153              	        lwz     r0,  XSRR1(r30)
 154              	        mtspr   SRR1,r0
 155              	        lwz     r0,  XSRR0(r30)
 156              	        mtspr   SRR0,r0
 157              	
 158              	        lwz     r0,  XR0(r30)
 159              	        addi    r30,  r30, STACK_FRAME_SIZE
 160              	        .endm
 161              	
   2              	.global OSStartHighRdy
   3              	.global OSCtxSw
   4              	
   5              	/**************************************************************************************************GAS LISTING /tmp/ccGJaoaJ.s 			page 4   6              	 *                                 START HIGHEST PRIORITY TASK READY-TO-RUN
   7              	 *
   8              	 * Description : This function is called by OSStart() to start the highest priority task that was c   9              	 *               by the application before calling OSStart().
  10              	 *
  11              	 * Arguments   : none
  12              	 *
  13              	 * Note(s)     : 1) OSStartHighRdy() MUST:
  14              	 *                   a) Call OSTaskSwHook() then,
  15              	 *                   b) Set OSRunning to TRUE,
  16              	 *                   c) Switch to the highest priority task by loading the stack pointer of the hig  17              	 *                      priority task into the SP register and execute an rfi instruction.
  18              	 */
  19              	
  20              	
  21              	
  22              	
  23              	    .align  4
  24              	OSStartHighRdy:                             
  25              	                                        
  26 0000 38000001 	    li      r0,  1                                   /*# Set OSRunning to 1*/
  27 0004 3D600000 	    lis     r11, OSRunning@ha            
  28 0008 980B0000 	    stb     r0,  OSRunning@l(r11)          
  29              	                                        
  30 000c 3D600000 	    lis     r11, OSTCBHighRdy@ha                     /*# Get pointer to ready task TCB*/
  31 0010 816B0000 	    lwz     r11, OSTCBHighRdy@l(r11)      
  32              	                                        
  33 0014 3D800000 	    lis     r12, OSTCBCur@ha                         /*/# Save as current task TCB ptr.*/
  34 0018 916C0000 	    stw     r11, OSTCBCur@l(r12)          
  35              	                                        
  36 001c 83CB0000 	    lwz     r30,  0(r11)                              /*//# Get new stack pointer*/
  37              	                                        
  38 0020 803E0004 	    epilogue                                       /*/ # Restore context*/
  38      805E0008   38      807E000C   38      809E0010   38      80BE0014   39              	                                        
  40 00d0 4C000064 	    rfi                                            /*/ # run task*/
  41              	
  42              	
  43              	/**************************************************************************************************  44              	 *                                         TASK LEVEL CONTEXT SWITCH
  45              	 *
  46              	 * Description : This function is called when a task makes a higher priority task ready-to-run.
  47              	 *
  48              	 * Arguments   : none
  49              	 *
  50              	 * Note(s)     : 1) Upon entry, 
  51              	 *                  OSTCBCur     points to the OS_TCB of the task to suspend
  52              	 *                  OSTCBHighRdy points to the OS_TCB of the task to resume
  53              	 */
  54              	
  55 00d4 60000000 	    .align  4
  55      60000000   55      60000000   56              	OSCtxSw:       
GAS LISTING /tmp/ccGJaoaJ.s 			page 5  57 00e0 97DEFF64 	    prologue                                       /*/ # Save context*/
  57      901E007C   57      903E0004   57      905E0008   57      907E000C   58              	
  59 0198 3D600000 	    lis     r11,OSTCBCur@ha                       /*/  # Get pointer to current TCB*/
  60 019c 816B0000 	    lwz     r11,OSTCBCur@l(r11)
  61 01a0 93CB0000 	    stw     r30, 0(r11)                            /*/  # Save stack pointer in current TCB*/
  62              	
  63 01a4 3D600000 	    lis     r11,OSTCBHighRdy@ha                    /*/ # Get pointer to ready task TCB*/
  64 01a8 816B0000 	    lwz     r11,OSTCBHighRdy@l(r11)
  65              	
  66 01ac 3D800000 	    lis     r12,OSTCBCur@ha                        /*/ # Save as current task TCB ptr.*/
  67 01b0 916C0000 	    stw     r11,OSTCBCur@l(r12)
  68              	
  69 01b4 3D800000 	    lis     r12,OSPrioHighRdy@ha                  /*/  # Get High Ready Priority*/
  70 01b8 894C0000 	    lbz     r10,OSPrioHighRdy@l(r12)
  71              	
  72 01bc 3D800000 	    lis     r12,OSPrioCur@ha                      /*/  # Save as Current Priority*/
  73 01c0 994C0000 	    stb     r10,OSPrioCur@l(r12)
  74              	
  75 01c4 83CB0000 	    lwz     r30, 0(r11)                           /*/   # Get new stack pointer from TCB*/
  76              	
  77 01c8 803E0004 	    epilogue                                      /*/  # Restore context*/
  77      805E0008   77      807E000C   77      809E0010   77      80BE0014   78              	
  79 0278 4C000064 	    rfi                                           /*/  # run task*/
  79      60000000 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -