/*
 * 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	SYSREG_GM_OFFSET
#define mask_exceptions		ssrf	SYSREG_EM_OFFSET
#define unmask_interrupts	csrf	SYSREG_GM_OFFSET
#define unmask_exceptions	csrf	SYSREG_EM_OFFSET

#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__ */
