cregit-Linux how code gets into the kernel

Release 4.14 arch/score/include/asm/processor.h

/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SCORE_PROCESSOR_H

#define _ASM_SCORE_PROCESSOR_H

#include <linux/cpumask.h>
#include <linux/threads.h>

#include <asm/segment.h>

struct task_struct;

/*
 * System setup and hardware flags..
 */
extern void (*cpu_wait)(void);

extern void start_thread(struct pt_regs *regs,
			unsigned long pc, unsigned long sp);
extern unsigned long get_wchan(struct task_struct *p);

/*
 * Return current * instruction pointer ("program counter").
 */

#define current_text_addr() ({ __label__ _l; _l: &&_l; })


#define cpu_relax()		barrier()

#define release_thread(thread)	do {} while (0)

/*
 * User space process size: 2GB. This is hardcoded into a few places,
 * so don't change it unless you know what you are doing.
 */

#define TASK_SIZE	0x7fff8000UL

/*
 * This decides where the kernel will search for a free chunk of vm
 * space during mmap's.
 */

#define TASK_UNMAPPED_BASE	((TASK_SIZE / 3) & ~(PAGE_SIZE))

#ifdef __KERNEL__

#define STACK_TOP	TASK_SIZE

#define STACK_TOP_MAX	TASK_SIZE
#endif

/*
 * If you change thread_struct remember to change the #defines below too!
 */

struct thread_struct {
	


unsigned long reg0, reg2, reg3;
	




unsigned long reg12, reg13, reg14, reg15, reg16;
	




unsigned long reg17, reg18, reg19, reg20, reg21;

	
unsigned long cp0_psr;
	
unsigned long cp0_ema;		/* Last user fault */
	
unsigned long cp0_badvaddr;	/* Last user fault */
	
unsigned long cp0_baduaddr;	/* Last kernel fault accessing USEG */
	
unsigned long error_code;
	
unsigned long trap_no;

	
unsigned long mflags;
	
unsigned long reg29;

	
unsigned long single_step;
	
unsigned long ss_nextcnt;

	
unsigned long insn1_type;
	
unsigned long addr1;
	
unsigned long insn1;

	
unsigned long insn2_type;
	
unsigned long addr2;
	
unsigned long insn2;

	
mm_segment_t current_ds;
};


#define INIT_THREAD {                                               \
        .reg0                   = 0,                            \
        .reg2                   = 0,                            \
        .reg3                   = 0,                            \
        .reg12                  = 0,                            \
        .reg13                  = 0,                            \
        .reg14                  = 0,                            \
        .reg15                  = 0,                            \
        .reg16                  = 0,                            \
        .reg17                  = 0,                            \
        .reg18                  = 0,                            \
        .reg19                  = 0,                            \
        .reg20                  = 0,                            \
        .reg21                  = 0,                            \
        .cp0_psr                = 0,                            \
        .error_code             = 0,                            \
        .trap_no                = 0,                            \
}


#define kstk_tos(tsk)		\
	((unsigned long)task_stack_page(tsk) + THREAD_SIZE - 32)

#define task_pt_regs(tsk)	((struct pt_regs *)kstk_tos(tsk) - 1)


#define KSTK_EIP(tsk)		(task_pt_regs(tsk)->cp0_epc)

#define KSTK_ESP(tsk)		(task_pt_regs(tsk)->regs[29])

#endif /* _ASM_SCORE_PROCESSOR_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Chen Liqin24399.59%150.00%
Greg Kroah-Hartman10.41%150.00%
Total244100.00%2100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.