cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

processor.h (2070B)


      1/*
      2 * Copyright (C) 2013 Altera Corporation
      3 * Copyright (C) 2010 Tobias Klauser <tklauser@distanz.ch>
      4 * Copyright (C) 2004 Microtronix Datacom Ltd
      5 * Copyright (C) 2001 Ken Hill (khill@microtronix.com)
      6 *                    Vic Phillips (vic@microtronix.com)
      7 *
      8 * based on SPARC asm/processor_32.h which is:
      9 *
     10 * Copyright (C) 1994 David S. Miller
     11 *
     12 * This file is subject to the terms and conditions of the GNU General Public
     13 * License.  See the file "COPYING" in the main directory of this archive
     14 * for more details.
     15 */
     16
     17#ifndef _ASM_NIOS2_PROCESSOR_H
     18#define _ASM_NIOS2_PROCESSOR_H
     19
     20#include <asm/ptrace.h>
     21#include <asm/registers.h>
     22#include <asm/page.h>
     23
     24#define NIOS2_FLAG_KTHREAD	0x00000001	/* task is a kernel thread */
     25
     26#define NIOS2_OP_NOP		0x1883a
     27#define NIOS2_OP_BREAK		0x3da03a
     28
     29#ifdef __KERNEL__
     30
     31#define STACK_TOP	TASK_SIZE
     32#define STACK_TOP_MAX	STACK_TOP
     33
     34#endif /* __KERNEL__ */
     35
     36/* Kuser helpers is mapped to this user space address */
     37#define KUSER_BASE		0x1000
     38#define KUSER_SIZE		(PAGE_SIZE)
     39#ifndef __ASSEMBLY__
     40
     41# define TASK_SIZE		0x7FFF0000UL
     42# define TASK_UNMAPPED_BASE	(PAGE_ALIGN(TASK_SIZE / 3))
     43
     44/* The Nios processor specific thread struct. */
     45struct thread_struct {
     46	struct pt_regs *kregs;
     47
     48	/* Context switch saved kernel state. */
     49	unsigned long ksp;
     50	unsigned long kpsr;
     51};
     52
     53#define INIT_MMAP \
     54	{ &init_mm, (0), (0), __pgprot(0x0), VM_READ | VM_WRITE | VM_EXEC }
     55
     56# define INIT_THREAD {			\
     57	.kregs	= NULL,			\
     58	.ksp	= 0,			\
     59	.kpsr	= 0,			\
     60}
     61
     62extern void start_thread(struct pt_regs *regs, unsigned long pc,
     63			unsigned long sp);
     64
     65struct task_struct;
     66
     67/* Free all resources held by a thread. */
     68static inline void release_thread(struct task_struct *dead_task)
     69{
     70}
     71
     72extern unsigned long __get_wchan(struct task_struct *p);
     73
     74#define task_pt_regs(p) \
     75	((struct pt_regs *)(THREAD_SIZE + task_stack_page(p)) - 1)
     76
     77/* Used by procfs */
     78#define KSTK_EIP(tsk)	((tsk)->thread.kregs->ea)
     79#define KSTK_ESP(tsk)	((tsk)->thread.kregs->sp)
     80
     81#define cpu_relax()	barrier()
     82
     83#endif /* __ASSEMBLY__ */
     84
     85#endif /* _ASM_NIOS2_PROCESSOR_H */