asm.h

来自「linux 内核源代码」· C头文件 代码 · 共 103 行

H
103
字号
/* * Copyright (C) 2004-2006 Atmel Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */#ifndef __ASM_AVR32_ASM_H__#define __ASM_AVR32_ASM_H__#include <asm/sysreg.h>#include <asm/asm-offsets.h>#include <asm/thread_info.h>#define mask_interrupts		ssrf	SR_GM_BIT#define mask_exceptions		ssrf	SR_EM_BIT#define unmask_interrupts	csrf	SR_GM_BIT#define unmask_exceptions	csrf	SR_EM_BIT#ifdef CONFIG_FRAME_POINTER	.macro	save_fp	st.w	--sp, r7	.endm	.macro	restore_fp	ld.w	r7, sp++	.endm	.macro	zero_fp	mov	r7, 0	.endm#else	.macro	save_fp	.endm	.macro	restore_fp	.endm	.macro	zero_fp	.endm#endif	.macro	get_thread_info reg	mov	\reg, sp	andl	\reg, ~(THREAD_SIZE - 1) & 0xffff	.endm	/* Save and restore registers */	.macro	save_min sr, tmp=lr	pushm	lr	mfsr	\tmp, \sr	zero_fp	st.w	--sp, \tmp	.endm	.macro	restore_min sr, tmp=lr	ld.w	\tmp, sp++	mtsr	\sr, \tmp	popm	lr	.endm	.macro	save_half sr, tmp=lr	save_fp	pushm	r8-r9,r10,r11,r12,lr	zero_fp	mfsr	\tmp, \sr	st.w	--sp, \tmp	.endm	.macro	restore_half sr, tmp=lr	ld.w	\tmp, sp++	mtsr	\sr, \tmp	popm	r8-r9,r10,r11,r12,lr	restore_fp	.endm	.macro	save_full_user sr, tmp=lr	stmts	--sp, r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,sp,lr	st.w	--sp, lr	zero_fp	mfsr	\tmp, \sr	st.w	--sp, \tmp	.endm	.macro	restore_full_user sr, tmp=lr	ld.w	\tmp, sp++	mtsr	\sr, \tmp	ld.w	lr, sp++	ldmts	sp++, r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,sp,lr	.endm	/* uaccess macros */	.macro branch_if_kernel scratch, label	get_thread_info \scratch	ld.w	\scratch, \scratch[TI_flags]	bld	\scratch, TIF_USERSPACE	brcc	\label	.endm	.macro ret_if_privileged scratch, addr, size, ret	sub	\scratch, \size, 1	add	\scratch, \addr	retcs	\ret	retmi	\ret	.endm#endif /* __ASM_AVR32_ASM_H__ */

⌨️ 快捷键说明

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