Go to the source code of this file.
Functions | |
NAME OS_CPU_A51 | $include (8052sfr.inc) public OsCpuStack |
Variables | |
stack base public | OSPrioCur |
Current running task id PUBLIC | OSPrioHighRdy |
Next ready task id public | OSTCBCur |
Current running task public | OSTCBHighRdy |
Next task ready to run public | OsCpuLoadContext |
Function for load task to run public | OsCpuContextSwitch |
Function for task level context switch public | OsCpuContextSwitchIsr |
Function for interrupt level context switch PUSHA MACRO IRP | REG |
Function for interrupt level context switch PUSHA MACRO IRP < ACC, B, DPH, DPL, PSW, R0, R1, R2, R3, R4, R5, R6, R7 > MOV | A |
Function for interrupt level context switch PUSHA MACRO IRP < ACC, B, DPH, DPL, PSW, R0, R1, R2, R3, R4, R5, R6, R7 > MOV REG PUSH ACC ENDM ENDM POPA MACRO IRP< R7, R6, R5, R4, R3, R2, R1, R0, PSW, DPL, DPH, B, ACC > POP ACC MOV A ENDM ENDM DT OsCpuStackPointer SEGMENT DATA RSEG DT OsCpuStackPointer | OsCpuStackPointer |
STACK is declare as DS at startup a51 RSEG | STACK |
OsCpuStack | __pad0__ |
mov | dph |
get task control block struct address of current task inc | dptr |
Skip byte of OsCpuTaskStack byte is pointer type byte movx | a |
mov | dpl |
get byte in task memory stack mov | sp |
assign to sp sfr mov | r0 |
index to next byte of task memory stack | L_LoadLoop |
Take out r0 | ~r7 |
Take out r0 | psw |
Take out r0 | b |
Take out r0 acc setb | ea |
Enable all interrupt | ret |
Task level context switch | PUSHA |
Push | acc |
A stack space for storing stack depth mov OsCpuStackPointer mov OsCpuStackPointer clr c xch dpl subb dpl jnc L_ContextSave dec dph | L_ContextSave |
Save sp top to task memory stack | L_ContextSaveLoop |
Get task memory stack pointer in OS_TCB mov | OsCpuStackPointer2 |
Get stack top from task memory stack mov sp inc dptr | L_OsCpuContextLoadLoop |
update OSPrioHighRdy to OSPrioCur | POPA |
Pop out isr call out | address |
A stack space for storing stack depth mov OsCpuStackPointer mov OsCpuStackPointer clr c xch dpl subb dpl jnc L_ContextSaveIsr dec dph | L_ContextSaveIsr |
Save sp top to task memory stack | L_ContextSaveLoopIsr |
Get stack top from task memory stack mov sp inc dptr | L_OsCpuContextLoadLoopIsr |
enable interrupt | reti |
NAME OS_CPU_A51 $include | ( | 8052sfr. | inc | ) |
Definition at line 45 of file os_cpu.a51.
Definition at line 54 of file os_cpu.a51.
Function for interrupt level context switch PUSHA MACRO IRP<ACC,B,DPH,DPL,PSW,R0,R1,R2,R3,R4,R5,R6,R7> MOV A |
Definition at line 22 of file os_cpu.a51.
Loop for copying stack to task memory stack pop acc |
Definition at line 91 of file os_cpu.a51.
Pop out isr call out address |
Push b |
Definition at line 85 of file os_cpu.a51.
Definition at line 51 of file os_cpu.a51.
save dptr to next task stack pointer mov OSTCBHighRdy mov dpl |
Definition at line 61 of file os_cpu.a51.
Loop for copying task memory stack to stack inc dptr [read] |
Definition at line 52 of file os_cpu.a51.
pop out next task stack setb ea |
Definition at line 85 of file os_cpu.a51.
A stack space for storing stack depth mov OsCpuStackPointer mov OsCpuStackPointer clr c xch dpl subb dpl jnc L_ContextSave dec dph L_ContextSave |
Definition at line 106 of file os_cpu.a51.
A stack space for storing stack depth mov OsCpuStackPointer mov OsCpuStackPointer clr c xch dpl subb dpl jnc L_ContextSaveIsr dec dph L_ContextSaveIsr |
Definition at line 194 of file os_cpu.a51.
Loop for copying stack to task memory stack djnz L_ContextSaveLoop |
Definition at line 119 of file os_cpu.a51.
Loop for copying stack to task memory stack djnz L_ContextSaveLoopIsr |
Definition at line 208 of file os_cpu.a51.
index to next byte of task memory stack L_LoadLoop |
Definition at line 66 of file os_cpu.a51.
Get stack top from task memory stack mov sp inc dptr L_OsCpuContextLoadLoop |
Definition at line 147 of file os_cpu.a51.
Get stack top from task memory stack mov sp inc dptr L_OsCpuContextLoadLoopIsr |
Definition at line 235 of file os_cpu.a51.
return to Task which is pre_store in task stack OsCpuContextSwitch |
return to next task OsCpuContextSwitchIsr |
OsCpuStack is STACK PR MemberFunc OS_CPU_A51 SEGMENT CODE RSEG PR MemberFunc OS_CPU_A51 OsCpuLoadContext |
Save task stack pointer back to task control block struct inc dptr mov a OsCpuStackPointer [read] |
Definition at line 22 of file os_cpu.a51.
save task stack pointer back to task control block struct inc dptr mov a OsCpuStackPointer2 [read] |
Definition at line 138 of file os_cpu.a51.
update OSTCBHighRdy to OSTCBCur mov OSPrioCur |
update OSTCBHighRdy to OSTCBCur mov OSPrioHighRdy |
Definition at line 14 of file os_cpu.a51.
Referenced by OsCoreScheduler(), and OsCoreSchedulerIsr().
update OSTCBHighRdy to OSTCBCur mov OSTCBCur [read] |
update OSTCBHighRdy to OSTCBCur mov OSTCBHighRdy [read] |
Definition at line 16 of file os_cpu.a51.
Referenced by OsCoreScheduler(), and OsCoreSchedulerIsr().
update OSPrioHighRdy to OSPrioCur POPA |
Definition at line 171 of file os_cpu.a51.
Push psw |
Definition at line 85 of file os_cpu.a51.
Task level context switch PUSHA |
Definition at line 91 of file os_cpu.a51.
Loop for copying task memory stack to stack cjne r0 |
Definition at line 64 of file os_cpu.a51.
Function for interrupt level context switch PUSHA MACRO IRP< ACC, B, DPH, DPL, PSW, R0, R1, R2, R3, R4, R5, R6, R7 > MOV REG PUSH ACC ENDM ENDM POPA MACRO IRP< R7, R6, R5, R4, R3, R2, R1, R0, PSW, DPL, DPH, B, ACC > POP ACC MOV REG |
Definition at line 22 of file os_cpu.a51.
enable interrupt ret |
Definition at line 87 of file os_cpu.a51.
enable interrupt reti |
Definition at line 261 of file os_cpu.a51.
Get stack top from task memory stack mov sp |
Definition at line 63 of file os_cpu.a51.
Definition at line 44 of file os_cpu.a51.
Take out r0 ~r7 |
Definition at line 85 of file os_cpu.a51.