Files
TencentOS-tiny/arch/arc/nsim/em/gcc/port_s.S
2020-05-06 17:56:42 +08:00

108 lines
1.4 KiB
ArmAsm

.global port_int_disable
.global port_int_enable
.global port_cpsr_save
.global port_cpsr_restore
.global port_sched_start
.global port_context_switch
.global start_r
.extern k_curr_task
.extern k_next_task
.text
.align 4
.type port_int_disable, %function
port_int_disable:
clri
j [blink]
.type port_int_enable, %function
port_int_enable:
seti
j [blink]
.type port_cpsr_save, %function
port_cpsr_save:
clri r0
j [blink]
.type port_cpsr_restore, %function
port_cpsr_restore:
seti r0
j [blink]
.type port_sched_start, %function
port_sched_start:
ld r0, [k_curr_task]
ld r1, [k_next_task]
ld r2, [r1]
st r2, [r0] /*k_curr_task=k_next_task*/
ld r0, [r2]
ld sp, [r0]
pop r3
j [r3]
.type start_r, %function
start_r:
pop blink;
pop r1
pop r2
pop r0
j_s.d [r1]
kflag r2
.type port_context_switch, %function
port_context_switch:
pop r15
pop r14
pop r13
pop blink
pop fp
pop gp
j [blink]
.type PendSV_Handler, %function
TaskSwitchContext:
clri
push gp
push fp
push blink
push r13
push r14
push r15
mov r2, dispatch_r
push r2
mov r5, k_curr_task
ld r6, [r5]
st r0, [r6]
mov r1, k_next_task
ld r2, [r1]
st r2, [r5]
ld r0, [r2]
ld sp, [r0]
seti
j [r0]
dispatch_r:
pop r15
pop r14
pop r13
pop blink
pop fp
pop gp
j [blink]