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

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

Version: ~ [ linux-6.1-rc7 ] ~ [ linux-6.0.10 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.80 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.156 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.225 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.267 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.300 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.334 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.302 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ 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 ksp;      /* kernel mode stack pointer */
 26         unsigned long callee_reg;       /* pointer to callee regs */
 27         unsigned long fault_address;    /* dbls as brkpt holder as well */
 28 #ifdef CONFIG_ARC_DSP_SAVE_RESTORE_REGS
 29         struct dsp_callee_regs dsp;
 30 #endif
 31 #ifdef CONFIG_ARC_FPU_SAVE_RESTORE
 32         struct arc_fpu fpu;
 33 #endif
 34 };
 35 
 36 #define INIT_THREAD  {                          \
 37         .ksp = sizeof(init_stack) + (unsigned long) init_stack, \
 38 }
 39 
 40 /* Forward declaration, a strange C thing */
 41 struct task_struct;
 42 
 43 #define task_pt_regs(p) \
 44         ((struct pt_regs *)(THREAD_SIZE + (void *)task_stack_page(p)) - 1)
 45 
 46 /*
 47  * A lot of busy-wait loops in SMP are based off of non-volatile data otherwise
 48  * get optimised away by gcc
 49  */
 50 #define cpu_relax()             barrier()
 51 
 52 #define KSTK_EIP(tsk)   (task_pt_regs(tsk)->ret)
 53 #define KSTK_ESP(tsk)   (task_pt_regs(tsk)->sp)
 54 
 55 /*
 56  * Where about of Task's sp, fp, blink when it was last seen in kernel mode.
 57  * Look in process.c for details of kernel stack layout
 58  */
 59 #define TSK_K_ESP(tsk)          (tsk->thread.ksp)
 60 
 61 #define TSK_K_REG(tsk, off)     (*((unsigned long *)(TSK_K_ESP(tsk) + \
 62                                         sizeof(struct callee_regs) + off)))
 63 
 64 #define TSK_K_BLINK(tsk)        TSK_K_REG(tsk, 4)
 65 #define TSK_K_FP(tsk)           TSK_K_REG(tsk, 0)
 66 
 67 extern void start_thread(struct pt_regs * regs, unsigned long pc,
 68                          unsigned long usp);
 69 
 70 extern unsigned int __get_wchan(struct task_struct *p);
 71 
 72 #endif /* !__ASSEMBLY__ */
 73 
 74 /*
 75  * Default System Memory Map on ARC
 76  *
 77  * ---------------------------- (lower 2G, Translated) -------------------------
 78  * 0x0000_0000          0x5FFF_FFFF     (user vaddr: TASK_SIZE)
 79  * 0x6000_0000          0x6FFF_FFFF     (reserved gutter between U/K)
 80  * 0x7000_0000          0x7FFF_FFFF     (kvaddr: vmalloc/modules/pkmap..)
 81  *
 82  * PAGE_OFFSET ---------------- (Upper 2G, Untranslated) -----------------------
 83  * 0x8000_0000          0xBFFF_FFFF     (kernel direct mapped)
 84  * 0xC000_0000          0xFFFF_FFFF     (peripheral uncached space)
 85  * -----------------------------------------------------------------------------
 86  */
 87 
 88 #define TASK_SIZE       0x60000000
 89 
 90 #define VMALLOC_START   (PAGE_OFFSET - (CONFIG_ARC_KVADDR_SIZE << 20))
 91 
 92 /* 1 PGDIR_SIZE each for fixmap/pkmap, 2 PGDIR_SIZE gutter (see asm/highmem.h) */
 93 #define VMALLOC_SIZE    ((CONFIG_ARC_KVADDR_SIZE << 20) - PMD_SIZE * 4)
 94 
 95 #define VMALLOC_END     (VMALLOC_START + VMALLOC_SIZE)
 96 
 97 #define USER_KERNEL_GUTTER    (VMALLOC_START - TASK_SIZE)
 98 
 99 #define STACK_TOP       TASK_SIZE
100 #define STACK_TOP_MAX   STACK_TOP
101 
102 /* This decides where the kernel will search for a free chunk of vm
103  * space during mmap's.
104  */
105 #define TASK_UNMAPPED_BASE      (TASK_SIZE / 3)
106 
107 #endif /* __ASM_ARC_PROCESSOR_H */
108 

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

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | 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