404

[ Avaa Bypassed ]




Upload:

Command:

botdev@3.14.251.36: ~ $
/*
 * Copyright (C) 2010 Tobias Klauser <tklauser@distanz.ch>
 * Copyright (C) 2004 Microtronix Datacom Ltd.
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License. See the file "COPYING" in the main directory of this archive
 * for more details.
 */

#ifndef _ASM_NIOS2_ENTRY_H
#define _ASM_NIOS2_ENTRY_H

#ifdef __ASSEMBLY__

#include <asm/processor.h>
#include <asm/registers.h>
#include <asm/asm-offsets.h>

/*
 * Standard Nios2 interrupt entry and exit macros.
 * Must be called with interrupts disabled.
 */
.macro SAVE_ALL
	rdctl	r24, estatus
	andi	r24, r24, ESTATUS_EU
	beq	r24, r0, 1f /* In supervisor mode, already on kernel stack */

	movia	r24, _current_thread	/* Switch to current kernel stack */
	ldw	r24, 0(r24)		/* using the thread_info */
	addi	r24, r24, THREAD_SIZE-PT_REGS_SIZE
	stw	sp, PT_SP(r24)		/* Save user stack before changing */
	mov	sp, r24
	br	2f

1 :	mov	r24, sp
	addi	sp, sp, -PT_REGS_SIZE	/* Backup the kernel stack pointer */
	stw	r24, PT_SP(sp)
2 :	stw	r1, PT_R1(sp)
	stw	r2, PT_R2(sp)
	stw	r3, PT_R3(sp)
	stw	r4, PT_R4(sp)
	stw	r5, PT_R5(sp)
	stw	r6, PT_R6(sp)
	stw	r7, PT_R7(sp)
	stw	r8, PT_R8(sp)
	stw	r9, PT_R9(sp)
	stw	r10, PT_R10(sp)
	stw	r11, PT_R11(sp)
	stw	r12, PT_R12(sp)
	stw	r13, PT_R13(sp)
	stw	r14, PT_R14(sp)
	stw	r15, PT_R15(sp)
	movi	r24, -1
	stw	r24, PT_ORIG_R2(sp)
	stw	r7, PT_ORIG_R7(sp)

	stw	ra, PT_RA(sp)
	stw	fp, PT_FP(sp)
	stw	gp, PT_GP(sp)
	rdctl	r24, estatus
	stw	r24, PT_ESTATUS(sp)
	stw	ea, PT_EA(sp)
.endm

.macro RESTORE_ALL
	ldw	r1, PT_R1(sp)		/* Restore registers */
	ldw	r2, PT_R2(sp)
	ldw	r3, PT_R3(sp)
	ldw	r4, PT_R4(sp)
	ldw	r5, PT_R5(sp)
	ldw	r6, PT_R6(sp)
	ldw	r7, PT_R7(sp)
	ldw	r8, PT_R8(sp)
	ldw	r9, PT_R9(sp)
	ldw	r10, PT_R10(sp)
	ldw	r11, PT_R11(sp)
	ldw	r12, PT_R12(sp)
	ldw	r13, PT_R13(sp)
	ldw	r14, PT_R14(sp)
	ldw	r15, PT_R15(sp)
	ldw	ra, PT_RA(sp)
	ldw	fp, PT_FP(sp)
	ldw	gp, PT_GP(sp)
	ldw	r24, PT_ESTATUS(sp)
	wrctl	estatus, r24
	ldw	ea, PT_EA(sp)
	ldw	sp, PT_SP(sp)		/* Restore sp last */
.endm

.macro	SAVE_SWITCH_STACK
	addi	sp, sp, -SWITCH_STACK_SIZE
	stw	r16, SW_R16(sp)
	stw	r17, SW_R17(sp)
	stw	r18, SW_R18(sp)
	stw	r19, SW_R19(sp)
	stw	r20, SW_R20(sp)
	stw	r21, SW_R21(sp)
	stw	r22, SW_R22(sp)
	stw	r23, SW_R23(sp)
	stw	fp, SW_FP(sp)
	stw	gp, SW_GP(sp)
	stw	ra, SW_RA(sp)
.endm

.macro	RESTORE_SWITCH_STACK
	ldw	r16, SW_R16(sp)
	ldw	r17, SW_R17(sp)
	ldw	r18, SW_R18(sp)
	ldw	r19, SW_R19(sp)
	ldw	r20, SW_R20(sp)
	ldw	r21, SW_R21(sp)
	ldw	r22, SW_R22(sp)
	ldw	r23, SW_R23(sp)
	ldw	fp, SW_FP(sp)
	ldw	gp, SW_GP(sp)
	ldw	ra, SW_RA(sp)
	addi	sp, sp, SWITCH_STACK_SIZE
.endm

#endif /* __ASSEMBLY__ */
#endif /* _ASM_NIOS2_ENTRY_H */

Filemanager

Name Type Size Permission Actions
Kbuild File 958 B 0644
asm-macros.h File 6.71 KB 0644
asm-offsets.h File 813 B 0644
cache.h File 1.14 KB 0644
cacheflush.h File 1.91 KB 0644
checksum.h File 2.03 KB 0644
cpuinfo.h File 1.42 KB 0644
delay.h File 547 B 0644
dma-mapping.h File 547 B 0644
elf.h File 3.2 KB 0644
entry.h File 2.6 KB 0644
io.h File 1.72 KB 0644
irq.h File 907 B 0644
irqflags.h File 1.75 KB 0644
kgdb.h File 1.88 KB 0644
linkage.h File 809 B 0644
mmu.h File 445 B 0644
mmu_context.h File 1.69 KB 0644
page.h File 3.08 KB 0644
pgalloc.h File 1.86 KB 0644
pgtable-bits.h File 1.05 KB 0644
pgtable.h File 7.99 KB 0644
processor.h File 2.18 KB 0644
ptrace.h File 2.29 KB 0644
registers.h File 2.15 KB 0644
setup.h File 1.04 KB 0644
shmparam.h File 804 B 0644
string.h File 618 B 0644
switch_to.h File 866 B 0644
syscall.h File 2.6 KB 0644
syscalls.h File 883 B 0644
thread_info.h File 3.37 KB 0644
timex.h File 912 B 0644
tlb.h File 963 B 0644
tlbflush.h File 1.56 KB 0644
traps.h File 514 B 0644
uaccess.h File 5.18 KB 0644