Skip to content
Snippets Groups Projects
Select Git revision
  • dbb381b619aa5242c9cb1a8fd54d71c4d79c91eb
  • vme-testing default
  • ci-test
  • master
  • remoteproc
  • am625-sk-ov5640
  • pcal6534-upstreaming
  • lps22df-upstreaming
  • msc-upstreaming
  • imx8mp
  • iio/noa1305
  • vme-next
  • vme-next-4.14-rc4
  • v4.14-rc4
  • v4.14-rc3
  • v4.14-rc2
  • v4.14-rc1
  • v4.13
  • vme-next-4.13-rc7
  • v4.13-rc7
  • v4.13-rc6
  • v4.13-rc5
  • v4.13-rc4
  • v4.13-rc3
  • v4.13-rc2
  • v4.13-rc1
  • v4.12
  • v4.12-rc7
  • v4.12-rc6
  • v4.12-rc5
  • v4.12-rc4
  • v4.12-rc3
32 results

processor.h

Blame
  • processor.h 3.06 KiB
    /* SPDX-License-Identifier: GPL-2.0-only */
    /*
     *  arch/arm/include/asm/processor.h
     *
     *  Copyright (C) 1995-1999 Russell King
     */
    
    #ifndef __ASM_ARM_PROCESSOR_H
    #define __ASM_ARM_PROCESSOR_H
    
    #ifdef __KERNEL__
    
    #include <asm/hw_breakpoint.h>
    #include <asm/ptrace.h>
    #include <asm/types.h>
    #include <asm/unified.h>
    #include <asm/vdso/processor.h>
    
    #ifdef __KERNEL__
    #define STACK_TOP	((current->personality & ADDR_LIMIT_32BIT) ? \
    			 TASK_SIZE : TASK_SIZE_26)
    #define STACK_TOP_MAX	TASK_SIZE
    #endif
    
    struct debug_info {
    #ifdef CONFIG_HAVE_HW_BREAKPOINT
    	struct perf_event	*hbp[ARM_MAX_HBP_SLOTS];
    #endif
    };
    
    struct thread_struct {
    							/* fault info	  */
    	unsigned long		address;
    	unsigned long		trap_no;
    	unsigned long		error_code;
    							/* debugging	  */
    	struct debug_info	debug;
    };
    
    /*
     * Everything usercopied to/from thread_struct is statically-sized, so
     * no hardened usercopy whitelist is needed.
     */
    static inline void arch_thread_struct_whitelist(unsigned long *offset,
    						unsigned long *size)
    {
    	*offset = *size = 0;
    }
    
    #define INIT_THREAD  {	}
    
    #define start_thread(regs,pc,sp)					\
    ({									\
    	unsigned long r7, r8, r9;					\
    									\
    	if (IS_ENABLED(CONFIG_BINFMT_ELF_FDPIC)) {			\
    		r7 = regs->ARM_r7;					\
    		r8 = regs->ARM_r8;					\
    		r9 = regs->ARM_r9;					\
    	}								\
    	memset(regs->uregs, 0, sizeof(regs->uregs));			\
    	if (IS_ENABLED(CONFIG_BINFMT_ELF_FDPIC) &&			\
    	    current->personality & FDPIC_FUNCPTRS) {			\
    		regs->ARM_r7 = r7;					\
    		regs->ARM_r8 = r8;					\
    		regs->ARM_r9 = r9;					\
    		regs->ARM_r10 = current->mm->start_data;		\
    	} else if (!IS_ENABLED(CONFIG_MMU))				\
    		regs->ARM_r10 = current->mm->start_data;		\
    	if (current->personality & ADDR_LIMIT_32BIT)			\