processor.h (9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e) processor.h (bd3c5798484aa9a08302a844d7a75a2ee3b53d05)
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
4 */
5#ifndef _ASM_PROCESSOR_H
6#define _ASM_PROCESSOR_H
7
8#include <linux/atomic.h>

--- 66 unchanged lines hidden (view full) ---

75{ \
76 fpr->val##width[FPR_IDX(width, idx)] = val; \
77}
78
79BUILD_FPR_ACCESS(32)
80BUILD_FPR_ACCESS(64)
81
82struct loongarch_fpu {
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
4 */
5#ifndef _ASM_PROCESSOR_H
6#define _ASM_PROCESSOR_H
7
8#include <linux/atomic.h>

--- 66 unchanged lines hidden (view full) ---

75{ \
76 fpr->val##width[FPR_IDX(width, idx)] = val; \
77}
78
79BUILD_FPR_ACCESS(32)
80BUILD_FPR_ACCESS(64)
81
82struct loongarch_fpu {
83 unsigned int fcsr;
84 uint64_t fcc; /* 8x8 */
83 uint64_t fcc; /* 8x8 */
84 uint32_t fcsr;
85 uint32_t ftop;
85 union fpureg fpr[NUM_FPU_REGS];
86};
87
86 union fpureg fpr[NUM_FPU_REGS];
87};
88
89struct loongarch_lbt {
90 /* Scratch registers */
91 unsigned long scr0;
92 unsigned long scr1;
93 unsigned long scr2;
94 unsigned long scr3;
95 /* Eflags register */
96 unsigned long eflags;
97};
98
88#define INIT_CPUMASK { \
89 {0,} \
90}
91
92#define ARCH_MIN_TASKALIGN 32
93
94struct loongarch_vdso_info;
95

--- 12 unchanged lines hidden (view full) ---

108
109 /* CSR registers */
110 unsigned long csr_prmd;
111 unsigned long csr_crmd;
112 unsigned long csr_euen;
113 unsigned long csr_ecfg;
114 unsigned long csr_badvaddr; /* Last user fault */
115
99#define INIT_CPUMASK { \
100 {0,} \
101}
102
103#define ARCH_MIN_TASKALIGN 32
104
105struct loongarch_vdso_info;
106

--- 12 unchanged lines hidden (view full) ---

119
120 /* CSR registers */
121 unsigned long csr_prmd;
122 unsigned long csr_crmd;
123 unsigned long csr_euen;
124 unsigned long csr_ecfg;
125 unsigned long csr_badvaddr; /* Last user fault */
126
116 /* Scratch registers */
117 unsigned long scr0;
118 unsigned long scr1;
119 unsigned long scr2;
120 unsigned long scr3;
121
122 /* Eflags register */
123 unsigned long eflags;
124
125 /* Other stuff associated with the thread. */
126 unsigned long trap_nr;
127 unsigned long error_code;
128 unsigned long single_step; /* Used by PTRACE_SINGLESTEP */
129 struct loongarch_vdso_info *vdso;
130
131 /*
132 * FPU & vector registers, must be at the last of inherited
133 * context because they are conditionally copied at fork().
134 */
135 struct loongarch_fpu fpu FPU_ALIGN;
127 /* Other stuff associated with the thread. */
128 unsigned long trap_nr;
129 unsigned long error_code;
130 unsigned long single_step; /* Used by PTRACE_SINGLESTEP */
131 struct loongarch_vdso_info *vdso;
132
133 /*
134 * FPU & vector registers, must be at the last of inherited
135 * context because they are conditionally copied at fork().
136 */
137 struct loongarch_fpu fpu FPU_ALIGN;
138 struct loongarch_lbt lbt; /* Also conditionally copied */
136
137 /* Hardware breakpoints pinned to this task. */
138 struct perf_event *hbp_break[LOONGARCH_MAX_BRP];
139 struct perf_event *hbp_watch[LOONGARCH_MAX_WRP];
140};
141
142#define thread_saved_ra(tsk) (tsk->thread.sched_ra)
143#define thread_saved_fp(tsk) (tsk->thread.sched_cfa)

--- 25 unchanged lines hidden (view full) ---

169 * Other stuff associated with the process \
170 */ \
171 .trap_nr = 0, \
172 .error_code = 0, \
173 /* \
174 * FPU & vector registers \
175 */ \
176 .fpu = { \
139
140 /* Hardware breakpoints pinned to this task. */
141 struct perf_event *hbp_break[LOONGARCH_MAX_BRP];
142 struct perf_event *hbp_watch[LOONGARCH_MAX_WRP];
143};
144
145#define thread_saved_ra(tsk) (tsk->thread.sched_ra)
146#define thread_saved_fp(tsk) (tsk->thread.sched_cfa)

--- 25 unchanged lines hidden (view full) ---

172 * Other stuff associated with the process \
173 */ \
174 .trap_nr = 0, \
175 .error_code = 0, \
176 /* \
177 * FPU & vector registers \
178 */ \
179 .fpu = { \
177 .fcsr = 0, \
178 .fcc = 0, \
180 .fcc = 0, \
181 .fcsr = 0, \
182 .ftop = 0, \
179 .fpr = {{{0,},},}, \
180 }, \
181 .hbp_break = {0}, \
182 .hbp_watch = {0}, \
183}
184
185struct task_struct;
186

--- 31 unchanged lines hidden ---
183 .fpr = {{{0,},},}, \
184 }, \
185 .hbp_break = {0}, \
186 .hbp_watch = {0}, \
187}
188
189struct task_struct;
190

--- 31 unchanged lines hidden ---