forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-09-20 cf4ce59b3b70238352c7f1729f0f7223214828ad
kernel/arch/powerpc/kernel/asm-offsets.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * This program is used to generate definitions needed by
34 * assembly language modules.
....@@ -6,12 +7,9 @@
67 * generate asm statements containing #defines,
78 * compile this file to assembler, and then extract the
89 * #defines from the assembly-language output.
9
- *
10
- * This program is free software; you can redistribute it and/or
11
- * modify it under the terms of the GNU General Public License
12
- * as published by the Free Software Foundation; either version
13
- * 2 of the License, or (at your option) any later version.
1410 */
11
+
12
+#define GENERATING_ASM_OFFSETS /* asm/smp.h */
1513
1614 #include <linux/compat.h>
1715 #include <linux/signal.h>
....@@ -32,7 +30,6 @@
3230
3331 #include <asm/io.h>
3432 #include <asm/page.h>
35
-#include <asm/pgtable.h>
3633 #include <asm/processor.h>
3734 #include <asm/cputable.h>
3835 #include <asm/thread_info.h>
....@@ -72,6 +69,10 @@
7269 #include <asm/fixmap.h>
7370 #endif
7471
72
+#ifdef CONFIG_XMON
73
+#include "../xmon/xmon_bpts.h"
74
+#endif
75
+
7576 #define STACK_PT_REGS_OFFSET(sym, val) \
7677 DEFINE(sym, STACK_FRAME_OVERHEAD + offsetof(struct pt_regs, val))
7778
....@@ -79,16 +80,26 @@
7980 {
8081 OFFSET(THREAD, task_struct, thread);
8182 OFFSET(MM, task_struct, mm);
83
+#ifdef CONFIG_STACKPROTECTOR
84
+ OFFSET(TASK_CANARY, task_struct, stack_canary);
85
+#ifdef CONFIG_PPC64
86
+ OFFSET(PACA_CANARY, paca_struct, canary);
87
+#endif
88
+#endif
8289 OFFSET(MMCONTEXTID, mm_struct, context.id);
8390 #ifdef CONFIG_PPC64
8491 DEFINE(SIGSEGV, SIGSEGV);
8592 DEFINE(NMI_MASK, NMI_MASK);
86
- OFFSET(TASKTHREADPPR, task_struct, thread.ppr);
8793 #else
88
- OFFSET(THREAD_INFO, task_struct, stack);
89
- DEFINE(THREAD_INFO_GAP, _ALIGN_UP(sizeof(struct thread_info), 16));
9094 OFFSET(KSP_LIMIT, thread_struct, ksp_limit);
95
+#ifdef CONFIG_PPC_RTAS
96
+ OFFSET(RTAS_SP, thread_struct, rtas_sp);
97
+#endif
9198 #endif /* CONFIG_PPC64 */
99
+ OFFSET(TASK_STACK, task_struct, stack);
100
+#ifdef CONFIG_SMP
101
+ OFFSET(TASK_CPU, task_struct, cpu);
102
+#endif
92103
93104 #ifdef CONFIG_LIVEPATCH
94105 OFFSET(TI_livepatch_sp, thread_info, livepatch_sp);
....@@ -119,6 +130,24 @@
119130 OFFSET(KSP_VSID, thread_struct, ksp_vsid);
120131 #else /* CONFIG_PPC64 */
121132 OFFSET(PGDIR, thread_struct, pgdir);
133
+#ifdef CONFIG_VMAP_STACK
134
+ OFFSET(SRR0, thread_struct, srr0);
135
+ OFFSET(SRR1, thread_struct, srr1);
136
+ OFFSET(DAR, thread_struct, dar);
137
+ OFFSET(DSISR, thread_struct, dsisr);
138
+#ifdef CONFIG_PPC_BOOK3S_32
139
+ OFFSET(THR0, thread_struct, r0);
140
+ OFFSET(THR3, thread_struct, r3);
141
+ OFFSET(THR4, thread_struct, r4);
142
+ OFFSET(THR5, thread_struct, r5);
143
+ OFFSET(THR6, thread_struct, r6);
144
+ OFFSET(THR8, thread_struct, r8);
145
+ OFFSET(THR9, thread_struct, r9);
146
+ OFFSET(THR11, thread_struct, r11);
147
+ OFFSET(THLR, thread_struct, lr);
148
+ OFFSET(THCTR, thread_struct, ctr);
149
+#endif
150
+#endif
122151 #ifdef CONFIG_SPE
123152 OFFSET(THREAD_EVR0, thread_struct, evr[0]);
124153 OFFSET(THREAD_ACC, thread_struct, acc);
....@@ -135,6 +164,9 @@
135164 #if defined(CONFIG_KVM) && defined(CONFIG_BOOKE)
136165 OFFSET(THREAD_KVM_VCPU, thread_struct, kvm_vcpu);
137166 #endif
167
+#if defined(CONFIG_PPC_BOOK3S_32) && defined(CONFIG_PPC_KUAP)
168
+ OFFSET(KUAP, thread_struct, kuap);
169
+#endif
138170
139171 #ifdef CONFIG_PPC_TRANSACTIONAL_MEM
140172 OFFSET(PACATMSCRATCH, paca_struct, tm_scratch);
....@@ -144,6 +176,7 @@
144176 OFFSET(THREAD_TM_TAR, thread_struct, tm_tar);
145177 OFFSET(THREAD_TM_PPR, thread_struct, tm_ppr);
146178 OFFSET(THREAD_TM_DSCR, thread_struct, tm_dscr);
179
+ OFFSET(THREAD_TM_AMR, thread_struct, tm_amr);
147180 OFFSET(PT_CKPT_REGS, thread_struct, ckpt_regs);
148181 OFFSET(THREAD_CKVRSTATE, thread_struct, ckvr_state.vr);
149182 OFFSET(THREAD_CKVRSAVE, thread_struct, ckvrsave);
....@@ -156,8 +189,6 @@
156189 OFFSET(TI_FLAGS, thread_info, flags);
157190 OFFSET(TI_LOCAL_FLAGS, thread_info, local_flags);
158191 OFFSET(TI_PREEMPT, thread_info, preempt_count);
159
- OFFSET(TI_TASK, thread_info, task);
160
- OFFSET(TI_CPU, thread_info, cpu);
161192
162193 #ifdef CONFIG_PPC64
163194 OFFSET(DCACHEL1BLOCKSIZE, ppc64_caches, l1d.block_size);
....@@ -172,8 +203,9 @@
172203 OFFSET(PACAPROCSTART, paca_struct, cpu_start);
173204 OFFSET(PACAKSAVE, paca_struct, kstack);
174205 OFFSET(PACACURRENT, paca_struct, __current);
206
+ DEFINE(PACA_THREAD_INFO, offsetof(struct paca_struct, __current) +
207
+ offsetof(struct task_struct, thread_info));
175208 OFFSET(PACASAVEDMSR, paca_struct, saved_msr);
176
- OFFSET(PACASTABRR, paca_struct, stab_rr);
177209 OFFSET(PACAR1, paca_struct, saved_r1);
178210 OFFSET(PACATOC, paca_struct, kernel_toc);
179211 OFFSET(PACAKBASE, paca_struct, kernelbase);
....@@ -212,6 +244,7 @@
212244 #ifdef CONFIG_PPC_BOOK3S_64
213245 OFFSET(PACASLBCACHE, paca_struct, slb_cache);
214246 OFFSET(PACASLBCACHEPTR, paca_struct, slb_cache_ptr);
247
+ OFFSET(PACASTABRR, paca_struct, stab_rr);
215248 OFFSET(PACAVMALLOCSLLP, paca_struct, vmalloc_sllp);
216249 #ifdef CONFIG_PPC_MM_SLICES
217250 OFFSET(MMUPSIZESLLP, mmu_psize_def, sllp);
....@@ -255,8 +288,9 @@
255288 OFFSET(ACCOUNT_STARTTIME_USER, paca_struct, accounting.starttime_user);
256289 OFFSET(ACCOUNT_USER_TIME, paca_struct, accounting.utime);
257290 OFFSET(ACCOUNT_SYSTEM_TIME, paca_struct, accounting.stime);
291
+#ifdef CONFIG_PPC_BOOK3E
258292 OFFSET(PACA_TRAP_SAVE, paca_struct, trap_save);
259
- OFFSET(PACA_NAPSTATELOST, paca_struct, nap_state_lost);
293
+#endif
260294 OFFSET(PACA_SPRG_VDSO, paca_struct, sprg_vdso);
261295 #else /* CONFIG_PPC64 */
262296 #ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
....@@ -273,12 +307,7 @@
273307
274308 /* Interrupt register frame */
275309 DEFINE(INT_FRAME_SIZE, STACK_INT_FRAME_SIZE);
276
- DEFINE(SWITCH_FRAME_SIZE, STACK_FRAME_OVERHEAD + sizeof(struct pt_regs));
277
-#ifdef CONFIG_PPC64
278
- /* Create extra stack space for SRR0 and SRR1 when calling prom/rtas. */
279
- DEFINE(PROM_FRAME_SIZE, STACK_FRAME_OVERHEAD + sizeof(struct pt_regs) + 16);
280
- DEFINE(RTAS_FRAME_SIZE, STACK_FRAME_OVERHEAD + sizeof(struct pt_regs) + 16);
281
-#endif /* CONFIG_PPC64 */
310
+ DEFINE(SWITCH_FRAME_SIZE, STACK_FRAME_WITH_PT_REGS);
282311 STACK_PT_REGS_OFFSET(GPR0, gpr[0]);
283312 STACK_PT_REGS_OFFSET(GPR1, gpr[1]);
284313 STACK_PT_REGS_OFFSET(GPR2, gpr[2]);
....@@ -322,11 +351,12 @@
322351 STACK_PT_REGS_OFFSET(_ESR, dsisr);
323352 #else /* CONFIG_PPC64 */
324353 STACK_PT_REGS_OFFSET(SOFTE, softe);
325
-
326
- /* These _only_ to be used with {PROM,RTAS}_FRAME_SIZE!!! */
327
- DEFINE(_SRR0, STACK_FRAME_OVERHEAD+sizeof(struct pt_regs));
328
- DEFINE(_SRR1, STACK_FRAME_OVERHEAD+sizeof(struct pt_regs)+8);
354
+ STACK_PT_REGS_OFFSET(_PPR, ppr);
329355 #endif /* CONFIG_PPC64 */
356
+
357
+#ifdef CONFIG_PPC_KUAP
358
+ STACK_PT_REGS_OFFSET(STACK_REGS_KUAP, kuap);
359
+#endif
330360
331361 #if defined(CONFIG_PPC32)
332362 #if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
....@@ -377,29 +407,25 @@
377407 OFFSET(CFG_SYSCALL_MAP32, vdso_data, syscall_map_32);
378408 OFFSET(WTOM_CLOCK_SEC, vdso_data, wtom_clock_sec);
379409 OFFSET(WTOM_CLOCK_NSEC, vdso_data, wtom_clock_nsec);
380
- OFFSET(STAMP_XTIME, vdso_data, stamp_xtime);
410
+ OFFSET(STAMP_XTIME_SEC, vdso_data, stamp_xtime_sec);
411
+ OFFSET(STAMP_XTIME_NSEC, vdso_data, stamp_xtime_nsec);
381412 OFFSET(STAMP_SEC_FRAC, vdso_data, stamp_sec_fraction);
382413 OFFSET(CLOCK_HRTIMER_RES, vdso_data, hrtimer_res);
414
+#ifdef CONFIG_PPC64
383415 OFFSET(CFG_ICACHE_BLOCKSZ, vdso_data, icache_block_size);
384416 OFFSET(CFG_DCACHE_BLOCKSZ, vdso_data, dcache_block_size);
385417 OFFSET(CFG_ICACHE_LOGBLOCKSZ, vdso_data, icache_log_block_size);
386418 OFFSET(CFG_DCACHE_LOGBLOCKSZ, vdso_data, dcache_log_block_size);
387
-#ifdef CONFIG_PPC64
388419 OFFSET(CFG_SYSCALL_MAP64, vdso_data, syscall_map_64);
389
- OFFSET(TVAL64_TV_SEC, timeval, tv_sec);
390
- OFFSET(TVAL64_TV_USEC, timeval, tv_usec);
391
- OFFSET(TVAL32_TV_SEC, compat_timeval, tv_sec);
392
- OFFSET(TVAL32_TV_USEC, compat_timeval, tv_usec);
393
- OFFSET(TSPC64_TV_SEC, timespec, tv_sec);
394
- OFFSET(TSPC64_TV_NSEC, timespec, tv_nsec);
395
- OFFSET(TSPC32_TV_SEC, compat_timespec, tv_sec);
396
- OFFSET(TSPC32_TV_NSEC, compat_timespec, tv_nsec);
397
-#else
398
- OFFSET(TVAL32_TV_SEC, timeval, tv_sec);
399
- OFFSET(TVAL32_TV_USEC, timeval, tv_usec);
400
- OFFSET(TSPC32_TV_SEC, timespec, tv_sec);
401
- OFFSET(TSPC32_TV_NSEC, timespec, tv_nsec);
420
+ OFFSET(TVAL64_TV_SEC, __kernel_old_timeval, tv_sec);
421
+ OFFSET(TVAL64_TV_USEC, __kernel_old_timeval, tv_usec);
402422 #endif
423
+ OFFSET(TSPC64_TV_SEC, __kernel_timespec, tv_sec);
424
+ OFFSET(TSPC64_TV_NSEC, __kernel_timespec, tv_nsec);
425
+ OFFSET(TVAL32_TV_SEC, old_timeval32, tv_sec);
426
+ OFFSET(TVAL32_TV_USEC, old_timeval32, tv_usec);
427
+ OFFSET(TSPC32_TV_SEC, old_timespec32, tv_sec);
428
+ OFFSET(TSPC32_TV_NSEC, old_timespec32, tv_nsec);
403429 /* timeval/timezone offsets for use by vdso */
404430 OFFSET(TZONE_TZ_MINWEST, timezone, tz_minuteswest);
405431 OFFSET(TZONE_TZ_DSTTIME, timezone, tz_dsttime);
....@@ -409,7 +435,10 @@
409435 DEFINE(CLOCK_MONOTONIC, CLOCK_MONOTONIC);
410436 DEFINE(CLOCK_REALTIME_COARSE, CLOCK_REALTIME_COARSE);
411437 DEFINE(CLOCK_MONOTONIC_COARSE, CLOCK_MONOTONIC_COARSE);
438
+ DEFINE(CLOCK_MAX, CLOCK_TAI);
412439 DEFINE(NSEC_PER_SEC, NSEC_PER_SEC);
440
+ DEFINE(EINVAL, EINVAL);
441
+ DEFINE(KTIME_LOW_RES, KTIME_LOW_RES);
413442
414443 #ifdef CONFIG_BUG
415444 DEFINE(BUG_ENTRY_SIZE, sizeof(struct bug_entry));
....@@ -498,11 +527,13 @@
498527 OFFSET(KVM_VRMA_SLB_V, kvm, arch.vrma_slb_v);
499528 OFFSET(KVM_RADIX, kvm, arch.radix);
500529 OFFSET(KVM_FWNMI, kvm, arch.fwnmi_enabled);
530
+ OFFSET(KVM_SECURE_GUEST, kvm, arch.secure_guest);
501531 OFFSET(VCPU_DSISR, kvm_vcpu, arch.shregs.dsisr);
502532 OFFSET(VCPU_DAR, kvm_vcpu, arch.shregs.dar);
503533 OFFSET(VCPU_VPA, kvm_vcpu, arch.vpa.pinned_addr);
504534 OFFSET(VCPU_VPA_DIRTY, kvm_vcpu, arch.vpa.dirty);
505535 OFFSET(VCPU_HEIR, kvm_vcpu, arch.emul_inst);
536
+ OFFSET(VCPU_NESTED, kvm_vcpu, arch.nested);
506537 OFFSET(VCPU_CPU, kvm_vcpu, cpu);
507538 OFFSET(VCPU_THREAD_CPU, kvm_vcpu, arch.thread_cpu);
508539 #endif
....@@ -529,6 +560,8 @@
529560 OFFSET(VCPU_IRQ_PENDING, kvm_vcpu, arch.irq_pending);
530561 OFFSET(VCPU_DBELL_REQ, kvm_vcpu, arch.doorbell_request);
531562 OFFSET(VCPU_MMCR, kvm_vcpu, arch.mmcr);
563
+ OFFSET(VCPU_MMCRA, kvm_vcpu, arch.mmcra);
564
+ OFFSET(VCPU_MMCRS, kvm_vcpu, arch.mmcrs);
532565 OFFSET(VCPU_PMC, kvm_vcpu, arch.pmc);
533566 OFFSET(VCPU_SPMC, kvm_vcpu, arch.spmc);
534567 OFFSET(VCPU_SIAR, kvm_vcpu, arch.siar);
....@@ -666,6 +699,9 @@
666699 HSTATE_FIELD(HSTATE_SDAR, host_mmcr[4]);
667700 HSTATE_FIELD(HSTATE_MMCR2, host_mmcr[5]);
668701 HSTATE_FIELD(HSTATE_SIER, host_mmcr[6]);
702
+ HSTATE_FIELD(HSTATE_MMCR3, host_mmcr[7]);
703
+ HSTATE_FIELD(HSTATE_SIER2, host_mmcr[8]);
704
+ HSTATE_FIELD(HSTATE_SIER3, host_mmcr[9]);
669705 HSTATE_FIELD(HSTATE_PMC1, host_pmc[0]);
670706 HSTATE_FIELD(HSTATE_PMC2, host_pmc[1]);
671707 HSTATE_FIELD(HSTATE_PMC3, host_pmc[2]);
....@@ -761,23 +797,6 @@
761797 OFFSET(VCPU_TIMING_LAST_ENTER_TBL, kvm_vcpu, arch.timing_last_enter.tv32.tbl);
762798 #endif
763799
764
-#ifdef CONFIG_PPC_POWERNV
765
- OFFSET(PACA_CORE_IDLE_STATE_PTR, paca_struct, core_idle_state_ptr);
766
- OFFSET(PACA_THREAD_IDLE_STATE, paca_struct, thread_idle_state);
767
- OFFSET(PACA_THREAD_MASK, paca_struct, thread_mask);
768
- OFFSET(PACA_SUBCORE_SIBLING_MASK, paca_struct, subcore_sibling_mask);
769
- OFFSET(PACA_REQ_PSSCR, paca_struct, requested_psscr);
770
- OFFSET(PACA_DONT_STOP, paca_struct, dont_stop);
771
-#define STOP_SPR(x, f) OFFSET(x, paca_struct, stop_sprs.f)
772
- STOP_SPR(STOP_PID, pid);
773
- STOP_SPR(STOP_LDBAR, ldbar);
774
- STOP_SPR(STOP_FSCR, fscr);
775
- STOP_SPR(STOP_HFSCR, hfscr);
776
- STOP_SPR(STOP_MMCR1, mmcr1);
777
- STOP_SPR(STOP_MMCR2, mmcr2);
778
- STOP_SPR(STOP_MMCRA, mmcra);
779
-#endif
780
-
781800 DEFINE(PPC_DBELL_SERVER, PPC_DBELL_SERVER);
782801 DEFINE(PPC_DBELL_MSGTYPE, PPC_DBELL_MSGTYPE);
783802
....@@ -785,5 +804,9 @@
785804 DEFINE(VIRT_IMMR_BASE, (u64)__fix_to_virt(FIX_IMMR_BASE));
786805 #endif
787806
807
+#ifdef CONFIG_XMON
808
+ DEFINE(BPT_SIZE, BPT_SIZE);
809
+#endif
810
+
788811 return 0;
789812 }