diff options
Diffstat (limited to 'arch/s390/include/asm/processor.h')
| -rw-r--r-- | arch/s390/include/asm/processor.h | 60 | 
1 files changed, 42 insertions, 18 deletions
| diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h index 11e4e3236937..56831dfa9198 100644 --- a/arch/s390/include/asm/processor.h +++ b/arch/s390/include/asm/processor.h @@ -11,12 +11,15 @@  #ifndef __ASM_S390_PROCESSOR_H  #define __ASM_S390_PROCESSOR_H +#ifndef __ASSEMBLY__ +  #include <linux/linkage.h>  #include <linux/irqflags.h>  #include <asm/cpu.h>  #include <asm/page.h>  #include <asm/ptrace.h>  #include <asm/setup.h> +#include <asm/runtime_instr.h>  /*   * Default implementation of macro that returns current @@ -75,11 +78,20 @@ struct thread_struct {  	unsigned long gmap_addr;	/* address of last gmap fault. */  	struct per_regs per_user;	/* User specified PER registers */  	struct per_event per_event;	/* Cause of the last PER trap */ +	unsigned long per_flags;	/* Flags to control debug behavior */          /* pfault_wait is used to block the process on a pfault event */  	unsigned long pfault_wait;  	struct list_head list; +	/* cpu runtime instrumentation */ +	struct runtime_instr_cb *ri_cb; +	int ri_signum; +#ifdef CONFIG_64BIT +	unsigned char trap_tdb[256];	/* Transaction abort diagnose block */ +#endif  }; +#define PER_FLAG_NO_TE		1UL	/* Flag to disable transactions. */ +  typedef struct thread_struct thread_struct;  /* @@ -130,6 +142,12 @@ struct task_struct;  struct mm_struct;  struct seq_file; +#ifdef CONFIG_64BIT +extern void show_cacheinfo(struct seq_file *m); +#else +static inline void show_cacheinfo(struct seq_file *m) { } +#endif +  /* Free all resources held by a thread. */  extern void release_thread(struct task_struct *);  extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); @@ -140,6 +158,8 @@ extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);  extern unsigned long thread_saved_pc(struct task_struct *t);  extern void show_code(struct pt_regs *regs); +extern void print_fn_code(unsigned char *code, unsigned long len); +extern int insn_to_mnemonic(unsigned char *instruction, char buf[8]);  unsigned long get_wchan(struct task_struct *p);  #define task_pt_regs(tsk) ((struct pt_regs *) \ @@ -331,23 +351,6 @@ extern void (*s390_base_ext_handler_fn)(void);  #define ARCH_LOW_ADDRESS_LIMIT	0x7fffffffUL -/* - * Helper macro for exception table entries - */ -#ifndef CONFIG_64BIT -#define EX_TABLE(_fault,_target)			\ -	".section __ex_table,\"a\"\n"			\ -	"	.align 4\n"				\ -	"	.long  " #_fault "," #_target "\n"	\ -	".previous\n" -#else -#define EX_TABLE(_fault,_target)			\ -	".section __ex_table,\"a\"\n"			\ -	"	.align 8\n"				\ -	"	.quad  " #_fault "," #_target "\n"	\ -	".previous\n" -#endif -  extern int memcpy_real(void *, void *, size_t);  extern void memcpy_absolute(void *, void *, size_t); @@ -358,4 +361,25 @@ extern void memcpy_absolute(void *, void *, size_t);  	memcpy_absolute(&(dest), &__tmp, sizeof(__tmp));	\  } -#endif                                 /* __ASM_S390_PROCESSOR_H           */ +/* + * Helper macro for exception table entries + */ +#define EX_TABLE(_fault, _target)	\ +	".section __ex_table,\"a\"\n"	\ +	".align	4\n"			\ +	".long	(" #_fault ") - .\n"	\ +	".long	(" #_target ") - .\n"	\ +	".previous\n" + +#else /* __ASSEMBLY__ */ + +#define EX_TABLE(_fault, _target)	\ +	.section __ex_table,"a"	;	\ +	.align	4 ;			\ +	.long	(_fault) - . ;		\ +	.long	(_target) - . ;		\ +	.previous + +#endif /* __ASSEMBLY__ */ + +#endif /* __ASM_S390_PROCESSOR_H */ | 
