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

📄 context.s

📁 RT-Thread是发展中的下一代微内核嵌入式实时操作系统
💻 S
字号:
/* * File      : context.S * This file is part of RT-Thread RTOS * COPYRIGHT (C) 2006, RT-Thread Development Team * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at * http://www.fayfayspace.org/license/LICENSE. * * Change Logs: * Date           Author       Notes * 2006-03-13     Bernard      first version *//*! * \addtogroup xgs3c4510 *//*@{*/#define NOINT			0xc0/* * rt_base_t rt_hw_interrupt_disable(); */.globl rt_hw_interrupt_disablert_hw_interrupt_disable:	mrs r0, cpsr	orr r1, r0, #NOINT	msr cpsr_c, r1	mov pc, lr/* * void rt_hw_interrupt_enable(rt_base_t level); */.globl rt_hw_interrupt_enablert_hw_interrupt_enable:	msr cpsr, r0	mov pc, lr/* * void rt_hw_context_switch(rt_uint32 from, rt_uint32 to); * r0 --> from * r1 --> to */.globl rt_hw_context_switchrt_hw_context_switch:	stmfd	sp!, {lr}		@ push pc (lr should be pushed in place of PC)	stmfd	sp!, {r0-r12, lr}	@ push lr & register file	mrs	r4, cpsr	stmfd	sp!, {r4}		@ push cpsr	mrs	r4, spsr	stmfd	sp!, {r4}		@ push spsr	str	sp, [r0]		@ store sp in preempted tasks TCB	ldr	sp, [r1]		@ get new task stack pointer	ldmfd	sp!, {r4}		@ pop new task spsr	msr	spsr_cxsf, r4	ldmfd	sp!, {r4}		@ pop new task cpsr	msr	cpsr_cxsf, r4	ldmfd	sp!, {r0-r12, lr, pc}	@ pop new task r0-r12, lr & pc/* * void rt_hw_context_switch_interrupt(rt_uint32 from, rt_uint32 to); */.globl rt_thread_switch_interrput_flag.globl rt_interrupt_from_thread.globl rt_interrupt_to_thread.globl rt_hw_context_switch_interruptrt_hw_context_switch_interrupt:	ldr r2, =rt_thread_switch_interrput_flag	ldr r3, [r2]	cmp r3, #1	beq _reswitch	mov r3, #1				@ set rt_thread_switch_interrput_flag to 1	str r3, [r2]	ldr r2, =rt_interrupt_from_thread	@ set rt_interrupt_from_thread	str r0, [r2]_reswitch:	ldr r2, =rt_interrupt_to_thread		@ set rt_interrupt_to_thread	str r1, [r2]	mov pc, lr

⌨️ 快捷键说明

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