~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arc/include/asm/processor.h

Version: ~ [ linux-6.6-rc1 ] ~ [ linux-6.5.2 ] ~ [ linux-6.4.15 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.52 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.131 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.194 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.256 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.294 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.325 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-only */
  2 /*
  3  * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
  4  *
  5  * vineetg: March 2009
  6  *  -Implemented task_pt_regs( )
  7  *
  8  * Amit Bhor, Sameer Dhavale, Ashwin Chaugule: Codito Technologies 2004
  9  */
 10 
 11 #ifndef __ASM_ARC_PROCESSOR_H
 12 #define __ASM_ARC_PROCESSOR_H
 13 
 14 #ifndef __ASSEMBLY__
 15 
 16 #include <asm/ptrace.h>
 17 #include <asm/dsp.h>
 18 #include <asm/fpu.h>
 19 
 20 /* Arch specific stuff which needs to be saved per task.
 21  * However these items are not so important so as to earn a place in
 22  * struct thread_info
 23  */
 24 struct thread_struct {
 25         unsigned long callee_reg;       /* pointer to callee regs */
 26         unsigned long fault_address;    /* dbls as brkpt holder as well */
 27 #ifdef CONFIG_ARC_DSP_SAVE_RESTORE_REGS
 28         struct dsp_callee_regs dsp;
 29 #endif
 30 #ifdef CONFIG_ARC_FPU_SAVE_RESTORE
 31         struct arc_fpu fpu;
 32 #endif
 33 };
 34 
 35 #define INIT_THREAD  { }
 36 
 37 /* Forward declaration, a strange C thing */
 38 struct task_struct;
 39 
 40 #define task_pt_regs(p) \
 41         ((struct pt_regs *)(THREAD_SIZE + (void *)task_stack_page(p)) - 1)
 42 
 43 /*
 44  * A lot of busy-wait loops in SMP are based off of non-volatile data otherwise
 45  * get optimised away by gcc
 46  */
 47 #define cpu_relax()             barrier()
 48 
 49 #define KSTK_EIP(tsk)   (task_pt_regs(tsk)->ret)
 50 #define KSTK_ESP(tsk)   (task_pt_regs(tsk)->sp)
 51 
 52 /*
 53  * Where about of Task's sp, fp, blink when it was last seen in kernel mode.
 54  * Look in process.c for details of kernel stack layout
 55  */
 56 #define TSK_K_ESP(tsk)          (task_thread_info(tsk)->ksp)
 57 
 58 #define TSK_K_REG(tsk, off)     (*((unsigned long *)(TSK_K_ESP(tsk) + \
 59                                         sizeof(struct callee_regs) + off)))
 60 
 61 #define TSK_K_BLINK(tsk)        TSK_K_REG(tsk, 4)
 62 #define TSK_K_FP(tsk)           TSK_K_REG(tsk, 0)
 63 
 64 extern void start_thread(struct pt_regs * regs, unsigned long pc,
 65                          unsigned long usp);
 66 
 67 extern unsigned int __get_wchan(struct task_struct *p);
 68 
 69 #endif /* !__ASSEMBLY__ */
 70 
 71 /*
 72  * Default System Memory Map on ARC
 73  *
 74  * ---------------------------- (lower 2G, Translated) -------------------------
 75  * 0x0000_0000          0x5FFF_FFFF     (user vaddr: TASK_SIZE)
 76  * 0x6000_0000          0x6FFF_FFFF     (reserved gutter between U/K)
 77  * 0x7000_0000          0x7FFF_FFFF     (kvaddr: vmalloc/modules/pkmap..)
 78  *
 79  * PAGE_OFFSET ---------------- (Upper 2G, Untranslated) -----------------------
 80  * 0x8000_0000          0xBFFF_FFFF     (kernel direct mapped)
 81  * 0xC000_0000          0xFFFF_FFFF     (peripheral uncached space)
 82  * -----------------------------------------------------------------------------
 83  */
 84 
 85 #define TASK_SIZE       0x60000000
 86 
 87 #define VMALLOC_START   (PAGE_OFFSET - (CONFIG_ARC_KVADDR_SIZE << 20))
 88 
 89 /* 1 PGDIR_SIZE each for fixmap/pkmap, 2 PGDIR_SIZE gutter (see asm/highmem.h) */
 90 #define VMALLOC_SIZE    ((CONFIG_ARC_KVADDR_SIZE << 20) - PMD_SIZE * 4)
 91 
 92 #define VMALLOC_END     (VMALLOC_START + VMALLOC_SIZE)
 93 
 94 #define USER_KERNEL_GUTTER    (VMALLOC_START - TASK_SIZE)
 95 
 96 #define STACK_TOP       TASK_SIZE
 97 #define STACK_TOP_MAX   STACK_TOP
 98 
 99 /* This decides where the kernel will search for a free chunk of vm
100  * space during mmap's.
101  */
102 #define TASK_UNMAPPED_BASE      (TASK_SIZE / 3)
103 
104 #endif /* __ASM_ARC_PROCESSOR_H */
105 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp