Linux Audio

Check our new training course

Loading...
v5.14.15
  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 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 */
 41struct task_struct;
 42
 43#define task_pt_regs(p) \
 44	((struct pt_regs *)(THREAD_SIZE + (void *)task_stack_page(p)) - 1)
 45
 46/* Free all resources held by a thread */
 47#define release_thread(thread) do { } while (0)
 48
 49/*
 50 * A lot of busy-wait loops in SMP are based off of non-volatile data otherwise
 51 * get optimised away by gcc
 52 */
 53#define cpu_relax()		barrier()
 54
 55#define KSTK_EIP(tsk)   (task_pt_regs(tsk)->ret)
 56#define KSTK_ESP(tsk)   (task_pt_regs(tsk)->sp)
 57
 58/*
 59 * Where about of Task's sp, fp, blink when it was last seen in kernel mode.
 60 * Look in process.c for details of kernel stack layout
 61 */
 62#define TSK_K_ESP(tsk)		(tsk->thread.ksp)
 63
 64#define TSK_K_REG(tsk, off)	(*((unsigned long *)(TSK_K_ESP(tsk) + \
 65					sizeof(struct callee_regs) + off)))
 66
 67#define TSK_K_BLINK(tsk)	TSK_K_REG(tsk, 4)
 68#define TSK_K_FP(tsk)		TSK_K_REG(tsk, 0)
 69
 70extern void start_thread(struct pt_regs * regs, unsigned long pc,
 71			 unsigned long usp);
 72
 73extern unsigned int get_wchan(struct task_struct *p);
 74
 75#endif /* !__ASSEMBLY__ */
 76
 77/*
 78 * Default System Memory Map on ARC
 79 *
 80 * ---------------------------- (lower 2G, Translated) -------------------------
 81 * 0x0000_0000		0x5FFF_FFFF	(user vaddr: TASK_SIZE)
 82 * 0x6000_0000		0x6FFF_FFFF	(reserved gutter between U/K)
 83 * 0x7000_0000		0x7FFF_FFFF	(kvaddr: vmalloc/modules/pkmap..)
 84 *
 85 * PAGE_OFFSET ---------------- (Upper 2G, Untranslated) -----------------------
 86 * 0x8000_0000		0xBFFF_FFFF	(kernel direct mapped)
 87 * 0xC000_0000		0xFFFF_FFFF	(peripheral uncached space)
 88 * -----------------------------------------------------------------------------
 89 */
 90
 91#define TASK_SIZE	0x60000000
 92
 93#define VMALLOC_START	(PAGE_OFFSET - (CONFIG_ARC_KVADDR_SIZE << 20))
 94
 95/* 1 PGDIR_SIZE each for fixmap/pkmap, 2 PGDIR_SIZE gutter (see asm/highmem.h) */
 96#define VMALLOC_SIZE	((CONFIG_ARC_KVADDR_SIZE << 20) - PGDIR_SIZE * 4)
 97
 98#define VMALLOC_END	(VMALLOC_START + VMALLOC_SIZE)
 99
100#define USER_KERNEL_GUTTER    (VMALLOC_START - TASK_SIZE)
101
102#define STACK_TOP       TASK_SIZE
103#define STACK_TOP_MAX   STACK_TOP
104
105/* This decides where the kernel will search for a free chunk of vm
106 * space during mmap's.
107 */
108#define TASK_UNMAPPED_BASE      (TASK_SIZE / 3)
109
110#endif /* __ASM_ARC_PROCESSOR_H */
v6.2
  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 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 */
 41struct 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
 67extern void start_thread(struct pt_regs * regs, unsigned long pc,
 68			 unsigned long usp);
 69
 70extern 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 */