Module Name: src
Committed By: thorpej
Date: Thu Sep 3 04:18:30 UTC 2020
Modified Files:
src/sys/arch/alpha/alpha: genassym.cf locore.s prom.c
src/sys/arch/alpha/include: asm.h
Log Message:
The only remaining consumer of curpcb was the PROM mapping code, for if
PROM console routines are being used (only on KN8AE). We have access to
the sam information via curlwp, so use that, and eliminate the need to set
cpu_info::ci_curpcb when context switching, which saves an extra all into
PALcode.
To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/alpha/alpha/genassym.cf
cvs rdiff -u -r1.126 -r1.127 src/sys/arch/alpha/alpha/locore.s
cvs rdiff -u -r1.54 -r1.55 src/sys/arch/alpha/alpha/prom.c
cvs rdiff -u -r1.39 -r1.40 src/sys/arch/alpha/include/asm.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/alpha/alpha/genassym.cf
diff -u src/sys/arch/alpha/alpha/genassym.cf:1.22 src/sys/arch/alpha/alpha/genassym.cf:1.23
--- src/sys/arch/alpha/alpha/genassym.cf:1.22 Thu Feb 20 08:27:38 2020
+++ src/sys/arch/alpha/alpha/genassym.cf Thu Sep 3 04:18:30 2020
@@ -1,4 +1,4 @@
-# $NetBSD: genassym.cf,v 1.22 2020/02/20 08:27:38 skrll Exp $
+# $NetBSD: genassym.cf,v 1.23 2020/09/03 04:18:30 thorpej Exp $
#
# Copyright (c) 1982, 1990, 1993
@@ -187,6 +187,5 @@ define SYS_exit SYS_exit
# CPU info
define CPU_INFO_CURLWP offsetof(struct cpu_info, ci_curlwp)
-define CPU_INFO_CURPCB offsetof(struct cpu_info, ci_curpcb)
define CPU_INFO_IDLE_LWP offsetof(struct cpu_info, ci_data.cpu_idlelwp)
define CPU_INFO_SIZEOF sizeof(struct cpu_info)
Index: src/sys/arch/alpha/alpha/locore.s
diff -u src/sys/arch/alpha/alpha/locore.s:1.126 src/sys/arch/alpha/alpha/locore.s:1.127
--- src/sys/arch/alpha/alpha/locore.s:1.126 Thu Sep 3 02:09:09 2020
+++ src/sys/arch/alpha/alpha/locore.s Thu Sep 3 04:18:30 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.s,v 1.126 2020/09/03 02:09:09 thorpej Exp $ */
+/* $NetBSD: locore.s,v 1.127 2020/09/03 04:18:30 thorpej Exp $ */
/*-
* Copyright (c) 1999, 2000, 2019 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
#include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: locore.s,v 1.126 2020/09/03 02:09:09 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: locore.s,v 1.127 2020/09/03 04:18:30 thorpej Exp $");
#include "assym.h"
@@ -78,10 +78,6 @@ __KERNEL_RCSID(0, "$NetBSD: locore.s,v 1
* hwpcb should be in a0. Clobbers v0, t0, t8..t11, a0.
*/
#define SWITCH_CONTEXT \
- /* Make a note of the context we're running on. */ \
- GET_CURPCB ; \
- stq a0, 0(v0) ; \
- \
/* Swap in the new context. */ \
call_pal PAL_OSF1_swpctx
Index: src/sys/arch/alpha/alpha/prom.c
diff -u src/sys/arch/alpha/alpha/prom.c:1.54 src/sys/arch/alpha/alpha/prom.c:1.55
--- src/sys/arch/alpha/alpha/prom.c:1.54 Thu Sep 3 02:09:09 2020
+++ src/sys/arch/alpha/alpha/prom.c Thu Sep 3 04:18:30 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: prom.c,v 1.54 2020/09/03 02:09:09 thorpej Exp $ */
+/* $NetBSD: prom.c,v 1.55 2020/09/03 04:18:30 thorpej Exp $ */
/*
* Copyright (c) 1992, 1994, 1995, 1996 Carnegie Mellon University
@@ -27,7 +27,7 @@
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
-__KERNEL_RCSID(0, "$NetBSD: prom.c,v 1.54 2020/09/03 02:09:09 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: prom.c,v 1.55 2020/09/03 04:18:30 thorpej Exp $");
#include "opt_multiprocessor.h"
@@ -77,7 +77,8 @@ prom_lev1map(void)
/*
* Find the level 1 map that we're currently running on.
*/
- apcb = (struct alpha_pcb *)ALPHA_PHYS_TO_K0SEG(curpcb);
+ apcb = (struct alpha_pcb *))
+ ALPHA_PHYS_TO_K0SEG((paddr_t)curlwp->l_md.md_pcbpaddr);
return ((pt_entry_t *)ALPHA_PHYS_TO_K0SEG(apcb->apcb_ptbr << PGSHIFT));
}
@@ -186,7 +187,7 @@ prom_enter(void)
* (i.e. the first one after alpha_init()), then the PROM
* is still mapped, regardless of the `prom_mapped' setting.
*/
- if (prom_mapped == 0 && curpcb != 0) {
+ if (! prom_mapped) {
if (!prom_uses_prom_console())
panic("prom_enter");
{
@@ -209,7 +210,7 @@ prom_leave(void)
/*
* See comment above.
*/
- if (prom_mapped == 0 && curpcb != 0) {
+ if (! prom_mapped) {
if (!prom_uses_prom_console())
panic("prom_leave");
{
Index: src/sys/arch/alpha/include/asm.h
diff -u src/sys/arch/alpha/include/asm.h:1.39 src/sys/arch/alpha/include/asm.h:1.40
--- src/sys/arch/alpha/include/asm.h:1.39 Sat Aug 29 22:50:27 2020
+++ src/sys/arch/alpha/include/asm.h Thu Sep 3 04:18:30 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: asm.h,v 1.39 2020/08/29 22:50:27 thorpej Exp $ */
+/* $NetBSD: asm.h,v 1.40 2020/09/03 04:18:30 thorpej Exp $ */
/*
* Copyright (c) 1991,1990,1989,1994,1995,1996 Carnegie Mellon University
@@ -675,10 +675,6 @@ label: ASCIZ msg; \
call_pal PAL_OSF1_rdval ; \
addq v0, CPU_INFO_FPCURLWP, v0
-#define GET_CURPCB \
- call_pal PAL_OSF1_rdval ; \
- addq v0, CPU_INFO_CURPCB, v0
-
#else /* if not MULTIPROCESSOR... */
IMPORT(cpu_info_primary, CPU_INFO_SIZEOF)
@@ -688,8 +684,6 @@ IMPORT(cpu_info_primary, CPU_INFO_SIZEOF
#define GET_CURLWP lda v0, cpu_info_primary + CPU_INFO_CURLWP
#define GET_FPCURLWP lda v0, cpu_info_primary + CPU_INFO_FPCURLWP
-
-#define GET_CURPCB lda v0, cpu_info_primary + CPU_INFO_CURPCB
#endif /* MULTIPROCESSOR */
#else
#define RCSID(_s) __SECTIONSTRING(.ident, _s)