Linux Audio

Check our new training course

Loading...
v6.8
  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 */
 24struct 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 */
 38struct 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
 64extern void start_thread(struct pt_regs * regs, unsigned long pc,
 65			 unsigned long usp);
 66
 67extern 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 */
v5.9
  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#ifdef CONFIG_ARC_PLAT_EZNPS
 21struct eznps_dp {
 22	unsigned int eflags;
 23	unsigned int gpa1;
 24};
 25#endif
 26
 27/* Arch specific stuff which needs to be saved per task.
 28 * However these items are not so important so as to earn a place in
 29 * struct thread_info
 30 */
 31struct thread_struct {
 32	unsigned long ksp;	/* kernel mode stack pointer */
 33	unsigned long callee_reg;	/* pointer to callee regs */
 34	unsigned long fault_address;	/* dbls as brkpt holder as well */
 35#ifdef CONFIG_ARC_DSP_SAVE_RESTORE_REGS
 36	struct dsp_callee_regs dsp;
 37#endif
 38#ifdef CONFIG_ARC_FPU_SAVE_RESTORE
 39	struct arc_fpu fpu;
 40#endif
 41#ifdef CONFIG_ARC_PLAT_EZNPS
 42	struct eznps_dp dp;
 43#endif
 44};
 45
 46#define INIT_THREAD  {                          \
 47	.ksp = sizeof(init_stack) + (unsigned long) init_stack, \
 48}
 49
 50/* Forward declaration, a strange C thing */
 51struct task_struct;
 52
 53#define task_pt_regs(p) \
 54	((struct pt_regs *)(THREAD_SIZE + (void *)task_stack_page(p)) - 1)
 55
 56/* Free all resources held by a thread */
 57#define release_thread(thread) do { } while (0)
 58
 59/*
 60 * A lot of busy-wait loops in SMP are based off of non-volatile data otherwise
 61 * get optimised away by gcc
 62 */
 63#ifndef CONFIG_EZNPS_MTM_EXT
 64
 65#define cpu_relax()		barrier()
 66
 67#else
 68
 69#define cpu_relax()     \
 70	__asm__ __volatile__ (".word %0" : : "i"(CTOP_INST_SCHD_RW) : "memory")
 71
 72#endif
 73
 74#define KSTK_EIP(tsk)   (task_pt_regs(tsk)->ret)
 75#define KSTK_ESP(tsk)   (task_pt_regs(tsk)->sp)
 76
 77/*
 78 * Where about of Task's sp, fp, blink when it was last seen in kernel mode.
 79 * Look in process.c for details of kernel stack layout
 80 */
 81#define TSK_K_ESP(tsk)		(tsk->thread.ksp)
 82
 83#define TSK_K_REG(tsk, off)	(*((unsigned long *)(TSK_K_ESP(tsk) + \
 84					sizeof(struct callee_regs) + off)))
 85
 86#define TSK_K_BLINK(tsk)	TSK_K_REG(tsk, 4)
 87#define TSK_K_FP(tsk)		TSK_K_REG(tsk, 0)
 88
 89extern void start_thread(struct pt_regs * regs, unsigned long pc,
 90			 unsigned long usp);
 91
 92extern unsigned int get_wchan(struct task_struct *p);
 93
 94#endif /* !__ASSEMBLY__ */
 95
 96/*
 97 * Default System Memory Map on ARC
 98 *
 99 * ---------------------------- (lower 2G, Translated) -------------------------
100 * 0x0000_0000		0x5FFF_FFFF	(user vaddr: TASK_SIZE)
101 * 0x6000_0000		0x6FFF_FFFF	(reserved gutter between U/K)
102 * 0x7000_0000		0x7FFF_FFFF	(kvaddr: vmalloc/modules/pkmap..)
103 *
104 * PAGE_OFFSET ---------------- (Upper 2G, Untranslated) -----------------------
105 * 0x8000_0000		0xBFFF_FFFF	(kernel direct mapped)
106 * 0xC000_0000		0xFFFF_FFFF	(peripheral uncached space)
107 * -----------------------------------------------------------------------------
108 */
109
110#define TASK_SIZE	0x60000000
111
112#define VMALLOC_START	(PAGE_OFFSET - (CONFIG_ARC_KVADDR_SIZE << 20))
113
114/* 1 PGDIR_SIZE each for fixmap/pkmap, 2 PGDIR_SIZE gutter (see asm/highmem.h) */
115#define VMALLOC_SIZE	((CONFIG_ARC_KVADDR_SIZE << 20) - PGDIR_SIZE * 4)
116
117#define VMALLOC_END	(VMALLOC_START + VMALLOC_SIZE)
118
119#define USER_KERNEL_GUTTER    (VMALLOC_START - TASK_SIZE)
120
121#ifdef CONFIG_ARC_PLAT_EZNPS
122/* NPS architecture defines special window of 129M in user address space for
123 * special memory areas, when accessing this window the MMU do not use TLB.
124 * Instead MMU direct the access to:
125 * 0x57f00000:0x57ffffff -- 1M of closely coupled memory (aka CMEM)
126 * 0x58000000:0x5fffffff -- 16 huge pages, 8M each, with fixed map (aka FMTs)
127 *
128 * CMEM - is the fastest memory we got and its size is 16K.
129 * FMT  - is used to map either to internal/external memory.
130 * Internal memory is the second fast memory and its size is 16M
131 * External memory is the biggest memory (16G) and also the slowest.
132 *
133 * STACK_TOP need to be PMD align (21bit) that is why we supply 0x57e00000.
134 */
135#define STACK_TOP       0x57e00000
136#else
137#define STACK_TOP       TASK_SIZE
138#endif
139
140#define STACK_TOP_MAX   STACK_TOP
141
142/* This decides where the kernel will search for a free chunk of vm
143 * space during mmap's.
144 */
145#define TASK_UNMAPPED_BASE      (TASK_SIZE / 3)
146
147#endif /* __ASM_ARC_PROCESSOR_H */