PERFORCE change 38564 for review
Serguei Tzukanov
tzukanov at FreeBSD.org
Wed Sep 24 23:14:54 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=38564
Change 38564 by tzukanov at tzukanov_antares on 2003/09/24 23:14:02
Update to -current.
Move some definitions related to ELF relocation into one file.
Misc style(9) fixes.
Affected files ...
.. //depot/projects/s390/libexec/rtld-elf/s390/reloc.c#6 edit
.. //depot/projects/s390/sys/s390/include/elf.h#2 edit
.. //depot/projects/s390/sys/s390/include/endian.h#2 edit
.. //depot/projects/s390/sys/s390/include/signal.h#4 edit
.. //depot/projects/s390/sys/s390/s390/critical.c#3 edit
.. //depot/projects/s390/sys/s390/s390/elf_machdep.c#6 edit
.. //depot/projects/s390/sys/s390/s390/external.c#5 edit
.. //depot/projects/s390/sys/s390/s390/identcpu.c#6 edit
.. //depot/projects/s390/sys/s390/s390/machdep.c#11 edit
.. //depot/projects/s390/sys/s390/s390/mp_machdep.c#3 edit
.. //depot/projects/s390/sys/s390/s390/pmap.c#16 edit
.. //depot/projects/s390/sys/s390/s390/sys_machdep.c#4 edit
.. //depot/projects/s390/sys/s390/s390/trap.c#11 edit
.. //depot/projects/s390/sys/s390/s390/vm_machdep.c#10 edit
.. //depot/projects/s390/usr.bin/Makefile#12 edit
Differences ...
==== //depot/projects/s390/libexec/rtld-elf/s390/reloc.c#6 (text+ko) ====
@@ -41,65 +41,10 @@
#include <unistd.h>
#include "debug.h"
+#define _RTLD_COMMON_RELOC
#include "rtld.h"
-#define _ILL 0
-#define _B8 1
-#define _L12 2
-#define _H16 3
-#define _PC16 5
-#define _W32 6
-
-#ifdef __s390x__
-#define _PC32 7
-#define _Q64 8
-
-#define _AD _Q64
-#else
-#define _AD _W32
-#endif
-
-#define _B 1
-#define _G 2
-#define _L 4
-#define _O 8
-#define _P 16
-#define _S 32
-
-static struct _reldesc {
- uint8_t field;
- uint8_t action;
-} reldesc[] = {
- { _ILL }, /* R_390_NONE */
- { _B8, _S, }, /* R_390_8 */
- { _L12, _S, }, /* R_390_12 */
- { _H16, _S, }, /* R_390_16 */
- { _W32, _S, }, /* R_390_32 */
- { _W32, _S | _P }, /* R_390_PC32 */
- { _L12, _O }, /* R_390_GOT12 */
- { _W32, _O, }, /* R_390_GOT32 */
- { _W32, _L, }, /* R_390_PLT32 */
- { _ILL }, /* R_390_COPY */
- { _AD, _S }, /* R_390_GLOB_DAT */
- { _ILL }, /* R_390_JMP_SLOT */
- { _AD, _B }, /* R_390_RELATIVE */
- { _AD, _S | _G }, /* R_390_GOTOFF */
- { _AD, _G | _P }, /* R_390_GOTPC */
- { _H16, _O }, /* R_390_GOT16 */
- { _H16, _S | _P }, /* R_390_PC16 */
- { _PC16, _S | _P }, /* R_390_PC16DBL */
- { _PC16, _L | _P }, /* R_390_PLT16DBL */
-#ifdef __s390x__
- { _PC32, _S | _P }, /* R_390_PC32DBL */
- { _PC32, _L | _P }, /* R_390_PLT32DBL */
- { _PC32, _G | _P }, /* R_390_GOTPCDBL */
- { _Q64, _S }, /* R_390_64 */
- { _Q64, _S | _P }, /* R_390_PC64 */
- { _Q64, _O }, /* R_390_GOT64 */
- { _Q64, _L }, /* R_390_PLT64 */
- { _PC32, _G | _O | _P }, /* R_390_GOTENT */
-#endif
-};
+static struct _reldesc reldesc[] = _RELDESC_INITIALIZER;
/*
* Process the special R_390_COPY relocations in the main program. These
==== //depot/projects/s390/sys/s390/include/elf.h#2 (text+ko) ====
@@ -108,4 +108,76 @@
#define ELF_RTLD_ADDR(vmspace) (round_page((vmspace)->vm_daddr + maxdsiz))
#endif
+#ifdef _RTLD_COMMON_RELOC
+#define _ILL 0
+#define _B8 1
+#define _L12 2
+#define _H16 3
+#define _PC16 5
+#define _W32 6
+
+#define _B 1
+#define _G 2
+#define _L 4
+#define _O 8
+#define _P 16
+#define _S 32
+
+struct _reldesc {
+ uint8_t field;
+ uint8_t action;
+};
+
+#define _RELDESC_INITIALIZER_S390 \
+ { _ILL }, /* R_390_NONE */ \
+ { _B8, _S, }, /* R_390_8 */ \
+ { _L12, _S, }, /* R_390_12 */ \
+ { _H16, _S, }, /* R_390_16 */ \
+ { _W32, _S, }, /* R_390_32 */ \
+ { _W32, _S | _P }, /* R_390_PC32 */ \
+ { _L12, _O }, /* R_390_GOT12 */ \
+ { _W32, _O, }, /* R_390_GOT32 */ \
+ { _W32, _L, }, /* R_390_PLT32 */ \
+ { _ILL }, /* R_390_COPY */ \
+ { _AD, _S }, /* R_390_GLOB_DAT */ \
+ { _ILL }, /* R_390_JMP_SLOT */ \
+ { _AD, _B }, /* R_390_RELATIVE */ \
+ { _AD, _S | _G }, /* R_390_GOTOFF */ \
+ { _AD, _G | _P }, /* R_390_GOTPC */ \
+ { _H16, _O }, /* R_390_GOT16 */ \
+ { _H16, _S | _P }, /* R_390_PC16 */ \
+ { _PC16, _S | _P }, /* R_390_PC16DBL */ \
+ { _PC16, _L | _P }, /* R_390_PLT16DBL */
+
+#ifdef __s390x__
+#define _PC32 7
+#define _Q64 8
+
+#define _AD _Q64
+
+#define _RELDESC_INITIALIZER_S390X \
+ { _PC32, _S | _P }, /* R_390_PC32DBL */ \
+ { _PC32, _L | _P }, /* R_390_PLT32DBL */ \
+ { _PC32, _G | _P }, /* R_390_GOTPCDBL */ \
+ { _Q64, _S }, /* R_390_64 */ \
+ { _Q64, _S | _P }, /* R_390_PC64 */ \
+ { _Q64, _O }, /* R_390_GOT64 */ \
+ { _Q64, _L }, /* R_390_PLT64 */ \
+ { _PC32, _G | _O | _P }, /* R_390_GOTENT */
+
+#define _RELDESC_INITIALIZER \
+{ \
+ _RELDESC_INITIALIZER_S390 \
+ _RELDESC_INITIALIZER_S390X \
+}
+#else
+#define _AD _W32
+
+#define _RELDESC_INITIALIZER \
+{ \
+ _RELDESC_INITIALIZER_S390 \
+}
+#endif
+
+#endif /* _RTLD_COMMON_RELOC */
#endif /* !_MACHINE_ELF_H_ */
==== //depot/projects/s390/sys/s390/include/endian.h#2 (text+ko) ====
@@ -29,6 +29,8 @@
#define BYTE_ORDER _BYTE_ORDER
#endif
+#ifdef __GNUC__
+
static __inline __uint16_t
__bswap16(__uint16_t x)
{
@@ -83,4 +85,15 @@
#define __ntohl(x) ((__uint32_t)(x))
#define __ntohs(x) ((__uint16_t)(x))
+#else /* !__GNUC__ */
+
+/*
+ * No optimizations are available for this compiler. Fall back to
+ * non-optimized functions by defining the constant usually used to prevent
+ * redefinition.
+ */
+#define _BYTEORDER_FUNC_DEFINED
+
+#endif /* __GNUC__ */
+
#endif /* !_MACHINE_ENDIAN_H_ */
==== //depot/projects/s390/sys/s390/include/signal.h#4 (text+ko) ====
@@ -11,7 +11,6 @@
#define _MACHINE_SIGNAL_H_
#include <sys/types.h>
-#include <machine/psw.h>
typedef int sig_atomic_t;
@@ -59,6 +58,8 @@
#endif
#if __BSD_VISIBLE
+#include <machine/psw.h>
+
struct sigcontext {
struct __sigset sc_mask;
int sc_onstack;
==== //depot/projects/s390/sys/s390/s390/critical.c#3 (text+ko) ====
@@ -9,7 +9,6 @@
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/pcpu.h>
-#include <sys/ktr.h>
#include <sys/kernel.h>
#include <sys/proc.h>
#include <machine/critical.h>
@@ -20,8 +19,6 @@
{
struct thread *td = curthread;
- CTR1(KTR_PROC, "cpu_critical_fork_exit: td = %p", td);
-
td->td_critnest = 1;
td->td_md.md_savecrit = SM_T|SM_IO|SM_EX|esa_sm_per;
}
==== //depot/projects/s390/sys/s390/s390/elf_machdep.c#6 (text+ko) ====
@@ -11,10 +11,10 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD: src/sys/s390/s390/elf_machdep.c,v 1.0 2002/08/01 23:51:16 tzukanov Exp $");
+#define _RTLD_COMMON_RELOC
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
-#include <sys/ktr.h>
#include <sys/exec.h>
#include <sys/imgact.h>
#include <sys/linker.h>
@@ -24,74 +24,10 @@
#include <sys/signalvar.h>
#include <sys/vnode.h>
#include <vm/vm.h>
-#include <vm/pmap.h>
#include <vm/vm_param.h>
-#include <machine/elf.h>
+
#include <machine/md_var.h>
-#ifndef KTR_LD
-#define KTR_LD KTR_GEN
-#endif
-
-#define _SHIFT1 (1 << 7)
-
-#define _B8 1
-#define _L12 2
-#define _H16 3
-#define _PC16 (_H16 | _SHIFT1)
-#define _W32 4
-#define _PC32 (_W32 | _SHIFT1)
-#define _Q64 5
-
-#ifdef __s390x__
-#define _AD _Q64
-#else
-#define _AD _W32
-#endif
-
-#define _B 1
-#define _G 2
-#define _L 3
-#define _O 4
-#define _P 5
-#define _S 6
-
-#define _ILL 0
-
-static struct _reldesc {
- uint8_t op[4];
-} reldesc[] = {
- {{ _ILL }}, /* R_390_NONE */
- {{ _B8, _S, }}, /* R_390_8 */
- {{ _L12, _S, }}, /* R_390_12 */
- {{ _H16, _S, }}, /* R_390_16 */
- {{ _W32, _S, }}, /* R_390_32 */
- {{ _W32, _S, _P }}, /* R_390_PC32 */
- {{ _L12, _O, }}, /* R_390_GOT12 */
- {{ _W32, _O, }}, /* R_390_GOT32 */
- {{ _W32, _L, }}, /* R_390_PLT32 */
- {{ _ILL }}, /* R_390_COPY */
- {{ _AD, _S }}, /* R_390_GLOB_DAT */
- {{ _ILL }}, /* R_390_JMP_SLOT */
- {{ _AD, _B }}, /* R_390_RELATIVE */
- {{ _AD, _S, _G }}, /* R_390_GOTOFF */
- {{ _AD, _G, _P }}, /* R_390_GOTPC */
- {{ _H16, _O }}, /* R_390_GOT16 */
- {{ _H16, _S, _P }}, /* R_390_PC16 */
- {{ _PC16, _S, _P }}, /* R_390_PC16DBL */
- {{ _PC16, _L, _P }}, /* R_390_PLT16DBL */
-#ifdef __s390x__
- {{ _PC32, _S, _P }}, /* R_390_PC32DBL */
- {{ _PC32, _L, _P }}, /* R_390_PLT32DBL */
- {{ _PC32, _G, _P }}, /* R_390_GOTPCDBL */
- {{ _Q64, _S }}, /* R_390_64 */
- {{ _Q64, _S, _P }}, /* R_390_PC64 */
- {{ _Q64, _O }}, /* R_390_GOT64 */
- {{ _Q64, _L }}, /* R_390_PLT64 */
- {{ _PC32, _G, _O, _P }}, /* R_390_GOTENT */
-#endif
-};
-
struct sysentvec elf32_freebsd_sysvec = {
SYS_MAXSYSCALL,
sysent,
@@ -133,78 +69,65 @@
(sysinit_cfunc_t)elf32_insert_brand_entry,
&freebsd_brand_info);
+static struct _reldesc reldesc[] = _RELDESC_INITIALIZER;
+
static int
elf_reloc_internal(linker_file_t lf, const void *data, int type, int local)
{
- Elf_Addr A, *where = NULL; /* XXX */
+ Elf_Addr value, *where;
const Elf_Rela *rela;
- struct _reldesc d;
- int t, i;
+ struct _reldesc desc;
- CTR3(KTR_LD, "elf_reloc: lf = %p, data = %p, type = %d", lf, data, type);
-
- /* S/390 and zSeries use only Elf32_Rela and Elf64_Rela respectively. */
+ /*
+ * S/390 and zSeries use only Elf32_Rela
+ * and Elf64_Rela respectively.
+ */
if (type != ELF_RELOC_RELA)
return -1;
rela = (const Elf_Rela *)data;
- d = reldesc[ELF_R_TYPE(rela->r_info)];
- t = d.op[0];
- if (t == _ILL) {
- return -1;
- }
+ desc = reldesc[ELF_R_TYPE(rela->r_info)];
+
+ value = rela->r_addend;
+ where = (Elf_Addr *)(lf->address + rela->r_offset);
+
+ if (desc.action & _B)
+ value += (Elf_Addr)lf->address;
- A = rela->r_addend;
- for (i = 1; d.op[i] && (i < 4); i++) {
- switch (d.op[i]) {
- case _B:
- A += (Elf_Addr)lf->address;
- break;
- case _G:
- CTR0(KTR_LD, "elf_reloc: unimplemented t");
- break;
- case _L:
- CTR0(KTR_LD, "elf_reloc: unimplemented t");
- break;
- case _O:
- CTR0(KTR_LD, "elf_reloc: unimplemented t");
- break;
- case _P:
- A -= (Elf_Addr)where;
- break;
- case _S:
- A += elf_lookup(lf, ELF_R_SYM(rela->r_info), 1);
- break;
- }
- }
+ if (desc.action & (_S|_L))
+ value += elf_lookup(lf, ELF_R_SYM(rela->r_info), 1);
- if (t & _SHIFT1) {
- /* We need shifting with sign copying. */
- A = ((long)A) >> 1;
- t &= ~_SHIFT1;
- }
+ if (desc.action & _P)
+ value -= (Elf_Addr)where;
- switch (t) {
+ switch (desc.field) {
case _B8:
- *(uint8_t *)where = (uint8_t)A;
+ *(uint8_t *)where = (uint8_t)value;
break;
case _L12:
- *(uint16_t *)where += A << 4;
+ *(uint16_t *)where |= value << 4;
+ break;
+ case _PC16:
+ *(int16_t *)where = ((int16_t)value) >> 1;
break;
case _H16:
- *(int16_t *)where = (int16_t)A;
+ *(int16_t *)where = (int16_t)value;
break;
case _W32:
- *(int32_t *)where = (int32_t)A;
+ *(int32_t *)where = (int32_t)value;
break;
#ifdef __s390x__
+ case _PC32:
+ *(int32_t *)where = ((int32_t)value) >> 1;
+ break;
case _Q64:
- *where = A;
+ *where = value;
+ break;
#endif
}
- return 0;
+ return (0);
}
int
==== //depot/projects/s390/sys/s390/s390/external.c#5 (text+ko) ====
@@ -13,7 +13,6 @@
#include <sys/bus.h>
#include <sys/kernel.h>
#include <sys/interrupt.h>
-#include <sys/ktr.h>
#include <machine/frame.h>
#include <machine/sysarea.h>
#include <s390/s390/external.h>
@@ -84,8 +83,6 @@
code = sysarea.external_code;
- CTR1(KTR_INTR, "Entering external interruption %#x", code);
-
td = curthread;
atomic_add_int(&td->td_intr_nesting_level, 1);
@@ -105,8 +102,6 @@
}
atomic_subtract_int(&td->td_intr_nesting_level, 1);
-
- CTR1(KTR_INTR, "Leaving external interruption %#x", code);
}
/*
==== //depot/projects/s390/sys/s390/s390/identcpu.c#6 (text+ko) ====
@@ -58,6 +58,7 @@
{"9672", "Yn7", "Generation 6"},
{"2066", "nnn", "z800"},
{"2064", "nnn", "z900"},
+ {"2084", "nnn", "z990"},
{"nnnn", "HERCULES", "Hercules"}
};
@@ -111,10 +112,10 @@
: [r0]"r"(r1), [r1]"r"(r1), [sysib]"a"(sysib)
: "r0", "r1", "cc");
- return cc;
+ return (cc);
nostsi:
- return 3;
+ return (3);
}
/*
@@ -149,15 +150,15 @@
mc = *model++;
if (mc == '\0') {
if (pc == '\0')
- return 0;
+ return (0);
else
- return 1;
+ return (1);
}
if ((pc != mc) && (pc != 'n'))
- return 1;
+ return (1);
}
- return 0;
+ return (0);
}
void
==== //depot/projects/s390/sys/s390/s390/machdep.c#11 (text+ko) ====
@@ -49,7 +49,6 @@
#include <sys/systm.h>
#include <sys/cons.h>
#include <sys/kernel.h>
-#include <sys/ktr.h>
#include <sys/linker.h>
#include <sys/lock.h>
#include <sys/malloc.h>
@@ -260,8 +259,6 @@
struct proc *p;
int oonstack;
- CTR3(KTR_SIG, "sendsig: td = %p, sig = %d, code = %u", curthread, sig, code);
-
td = curthread;
p = td->td_proc;
@@ -323,8 +320,6 @@
psw_define_addr(&tf->tf_psw, PS_STRINGS - *(p->p_sysent->sv_szsigcode));
tf->tf_gpr[15] = (u_long)sfp - sizeof(struct stackframe);
- CTR2(KTR_SIG, "ps_strings = %p, *sz = %d", PS_STRINGS, *(p->p_sysent->sv_szsigcode));
-
PROC_LOCK(p);
}
@@ -345,8 +340,6 @@
ucontext_t uc;
int error;
- CTR2(KTR_SIG, "sigreturn: td = %p, uap->sigcntxp = %p", td, uap->sigcntxp);
-
error = copyin(uap->sigcntxp, &uc, sizeof(uc));
if (error)
return (error);
@@ -400,9 +393,6 @@
{
struct trapframe *tf;
- CTR4(KTR_PROC, "setregs: td = %p, entry = %x, stack = %x, ps_strings = %x",
- td, entry, stack, ps_strings);
-
tf = td->td_frame;
bzero(tf, sizeof(*tf));
psw_define(&tf->tf_psw, PSW_USER, entry);
@@ -415,7 +405,7 @@
u_long x;
int argc;
- CTR0(KTR_PROC, "setregs: stack not aligned properly");
+ printf("%s: stack is not aligned properly\n", __func__);
ostack = (caddr_t)stack;
stack &= ~7ul;
==== //depot/projects/s390/sys/s390/s390/mp_machdep.c#3 (text+ko) ====
@@ -28,8 +28,8 @@
static u_int cpu2cpuid[MAXCPU];
/*
- * There are no machines with more than 16 simultaneously
- * online CPUs at the time (July 2002).
+ * There are no machines with more than 32 simultaneously
+ * online CPUs at the time (last revised: September 2003).
*/
static int mp_overflow;
==== //depot/projects/s390/sys/s390/s390/pmap.c#16 (text+ko) ====
@@ -55,14 +55,12 @@
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
-#include <sys/ktr.h>
#include <sys/lock.h>
#include <sys/mman.h>
#include <sys/msgbuf.h>
#include <sys/smp.h>
#include <sys/mutex.h>
#include <sys/proc.h>
-#include <sys/sx.h>
#include <sys/user.h>
#include <sys/vmmeter.h>
#include <vm/vm.h>
@@ -297,8 +295,6 @@
else
pte = (vm_offset_t)&invalid_pte;
- CTR3(KTR_PMAP, "pmap_ptepa: pmap = %p, va = %x, pte = %x", pmap, va, pte);
-
return (pte);
}
@@ -368,26 +364,20 @@
static int
pmap_unwire_pte_hold(pmap_t pmap, vm_page_t mpte)
{
- CTR2(KTR_PMAP, "pmap_unwire_pte_hold: pmap = %p, mpte = %x", pmap, mpte);
-
vm_page_unhold(mpte);
if (mpte->hold_count)
- return 0;
+ return (0);
while (vm_page_sleep_if_busy(mpte , FALSE, "pmuph"))
vm_page_lock_queues();
if (mpte->hold_count == 0) {
- CTR0(KTR_PMAP, "\tmpte_hold_count == 0");
-
pmap_clear_ste_quad(&pmap->pm_sto[mpte->pindex << 2]);
pmap->pm_stats.resident_count--;
/* Free the page if it is finally unwired. */
if (--mpte->wire_count == 0) {
- CTR0(KTR_PMAP, "\t\tmpte->wire_count == 0");
-
vm_page_busy(mpte);
vm_page_free(mpte);
cnt.v_wire_count--;
@@ -400,8 +390,6 @@
static int
pmap_unuse_ptp(pmap_t pmap, vm_offset_t va, vm_page_t mpte)
{
- CTR3(KTR_PMAP, "pmap_unuse_ptp: pmap = %p, va = %x, mpte = %x", pmap, va, mpte);
-
if (pmap == kernel_pmap)
return (0);
@@ -422,16 +410,12 @@
pv_entry_t pv;
int rv = 0;
- CTR3(KTR_PMAP, "pmap_remove_entry: pmap = %p, va = %x, pa = %x", pmap, va, VM_PAGE_TO_PHYS(m));
-
if (m->md.pv_list_count < pmap->pm_stats.resident_count) {
- CTR0(KTR_PMAP, "\tpv_list_count < resident_count");
TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
if (pmap == pv->pv_pmap && va == pv->pv_va)
break;
}
} else {
- CTR0(KTR_PMAP, "\tpv_list_count > resident_count");
TAILQ_FOREACH(pv, &pmap->pm_pvlist, pv_plist) {
if (va == pv->pv_va)
break;
@@ -455,8 +439,6 @@
{
pv_entry_t pv;
- CTR4(KTR_PMAP, "pmap_insert_entry: pmap = %p, va = %x, pa = %x, mpte = %x", pmap, va, VM_PAGE_TO_PHYS(m), mpte);
-
pv = pv_get();
pv->pv_va = va;
pv->pv_pmap = pmap;
@@ -477,8 +459,6 @@
pmap_t pmap;
pte_t pte;
- CTR1(KTR_PMAP, "pmap_remove_all: pa = %x", VM_PAGE_TO_PHYS(m));
-
mtx_assert(&vm_page_queue_mtx, MA_OWNED);
while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) {
pmap = pv->pv_pmap;
@@ -514,8 +494,6 @@
vm_page_t mpte;
int i;
- CTR2(KTR_PMAP, "pmap_create_pte: pmap = %p, ptindex = %u", pmap, ptindex);
-
VM_OBJECT_LOCK(pmap->pm_pteobj);
mpte = vm_page_grab(pmap->pm_pteobj, (ptindex >> 2),
VM_ALLOC_RETRY | VM_ALLOC_WIRED);
@@ -551,10 +529,7 @@
vm_page_t mpte;
ste_t ste;
- CTR2(KTR_PMAP, "pmap_get_pte: pmap = %p, va = %x", pmap, va);
-
ste = pmap->pm_sto[ptindex];
- CTR1(KTR_PMAP, "\tste = %x", ste);
if (ste_valid(ste)) {
mpte = PHYS_TO_VM_PAGE(ste);
KASSERT(mpte != NULL, ("pmap_get_pte: mpte == NULL"));
@@ -569,11 +544,9 @@
static int
pmap_remove_pte(pmap_t pmap, vm_paddr_t ptepa, vm_offset_t va)
{
- vm_page_t m;
+ vm_page_t m, mpte;
pte_t pte;
- CTR3(KTR_PMAP, "pmap_remove_pte: pmap = %p, ptepa = %x, va = %x", pmap, ptepa, va);
-
ipte(ptepa);
pte = lura(ptepa);
@@ -582,8 +555,6 @@
pmap->pm_stats.resident_count--;
if (pte & PTE_MANAGED) {
- CTR0(KTR_PMAP, "\tpage managed");
-
m = PHYS_TO_VM_PAGE(pte);
if (pmap_is_modified(m) && pmap_track_modified(va))
vm_page_dirty(m);
@@ -592,10 +563,9 @@
return pmap_remove_entry(pmap, m, va);
} else {
- return pmap_unuse_ptp(pmap, va, NULL);
+ mpte = PHYS_TO_VM_PAGE(ptepa);
+ return pmap_unuse_ptp(pmap, va, mpte);
}
-
- return (0);
}
static void *
@@ -613,8 +583,6 @@
pmap_t pmap;
u_long cr7;
- CTR1(KTR_PMAP, "pmap_activate: td = %p", td);
-
pmap = vmspace_pmap(td->td_proc->p_vmspace);
pmap->pm_active |= PCPU_GET(cpumask);
stopa = vtophys(pmap->pm_sto);
@@ -626,8 +594,6 @@
vm_offset_t
pmap_addr_hint(vm_object_t object, vm_offset_t va, vm_size_t size)
{
- CTR3(KTR_PMAP, "pmap_addr_hint: object = %p, va = %x, size = %u", object, va, size);
-
return (va);
}
@@ -637,8 +603,6 @@
vm_offset_t ptepa;
pte_t pte;
- CTR3(KTR_PMAP, "pmap_change_wiring: pmap = %p, va = %x, wired = %d", pmap, va, wired);
-
ptepa = pmap_ptepa(pmap, va);
pte = lura(ptepa);
if (wired) {
@@ -658,8 +622,6 @@
{
vm_paddr_t pa = VM_PAGE_TO_PHYS(m);
- CTR1(KTR_PMAP, "pmap_clear_modify: pa = %x", pa);
-
sk_set(pa, sk_get(pa) & ~SK_C);
}
@@ -668,8 +630,6 @@
{
vm_paddr_t pa = VM_PAGE_TO_PHYS(m);
- CTR1(KTR_PMAP, "pmap_clear_reference: pa = %x", pa);
-
__asm volatile (
" rrbe %%r0, %[pa]"
:: [pa]"r"(pa) : "r0", "cc");
@@ -679,9 +639,6 @@
pmap_copy(pmap_t dst_pmap, pmap_t src_pmap,
vm_offset_t dst_addr, vm_size_t len, vm_offset_t src_addr)
{
- CTR5(KTR_PMAP, "pmap_copy: dst_pmap = %p, src_pmap = %p, va = %x, len = %u, src_addr = %x",
- dst_pmap, src_pmap, dst_addr, len, src_addr);
-
/* Optional for perfomance */
}
@@ -691,8 +648,6 @@
vm_paddr_t srcpa = VM_PAGE_TO_PHYS(src);
vm_paddr_t dstpa = VM_PAGE_TO_PHYS(dst);
- CTR2(KTR_PMAP, "pmap_copy_page: srcpa = %x, dstpa = %x", srcpa, dstpa);
-
KASSERT(lura(csrc_ptepa) & PTE_INVALID,
("pmap_copy_page: csrc_ptepa busy"));
KASSERT(lura(cdst_ptepa) & PTE_INVALID,
@@ -715,9 +670,6 @@
pte_t opte, pte;
vm_page_t mpte;
- CTR5(KTR_PMAP, "pmap_enter: pmap=%p, va = %x, pa = %x, prot = %x, wired = %d",
- pmap, va, VM_PAGE_TO_PHYS(m), prot, wired);
-
KASSERT(va < VM_MAX_ADDRESS,
("pmap_enter: va is too big"));
@@ -737,8 +689,6 @@
/* If this is protection or wiring change. */
if (((opte & PTE_INVALID) == 0) && (pte == opa)) {
- CTR0(KTR_PMAP, "\tprotection or wiring change");
-
if (wired && !pte_wired(opte))
pmap->pm_stats.wired_count++;
else if (!wired && pte_wired(opte))
@@ -775,8 +725,6 @@
if ((opte & PTE_INVALID) == 0) {
int error;
- CTR0(KTR_PMAP, "\told pte valid");
-
vm_page_lock_queues();
error = pmap_remove_pte(pmap, ptepa, va);
vm_page_unlock_queues();
@@ -786,8 +734,6 @@
/* Enter on the pv list if part of our managed memory. */
if (pmap_initialized &&
((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0)) {
- CTR0(KTR_PMAP, "\tentering on the pv list");
-
pmap_insert_entry(pmap, va, mpte, m);
pte |= PTE_MANAGED;
}
@@ -873,7 +819,7 @@
}
vm_page_t
-pmap_extract_and_hold(pmap_t pmap, vm_offset_t va)
+pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot)
{
vm_paddr_t pa;
vm_page_t m;
@@ -896,7 +842,6 @@
pmap_growkernel(vm_offset_t va)
{
kernel_vm_end = 4*nkptp*SEGMENT_SIZE;
- CTR2(KTR_PMAP, "pmap_growkernel: va = %x, kernel_vm_end = %x", va, kernel_vm_end);
}
void
@@ -904,8 +849,6 @@
{
int i;
- CTR2(KTR_PMAP, "pmap_init: spa = %x, epa = %x", spa, epa);
-
/* Allocate memory for random pmap structures. */
for (i = 0; i < vm_page_array_size; i++) {
vm_page_t m;
@@ -930,8 +873,6 @@
{
int shpgperproc = PMAP_SHPGPERPROC;
- CTR0(KTR_PMAP, "pmap_init2: ");
-
TUNABLE_INT_FETCH("vm.pmap.shpgperproc", &shpgperproc);
pv_entry_max = shpgperproc * maxproc + vm_page_array_size;
TUNABLE_INT_FETCH("vm.pmap.pv_entries", &pv_entry_max);
@@ -944,8 +885,6 @@
{
vm_paddr_t pa = VM_PAGE_TO_PHYS(m);
- CTR1(KTR_PMAP, "pmap_is_modified: pa = %x", pa);
-
if (!pmap_initialized || (m->flags & PG_FICTITIOUS))
return FALSE;
@@ -957,8 +896,6 @@
{
vm_paddr_t ptepa;
- CTR2(KTR_PMAP, "pmap_kenter: va = %x, pa = %x", va, pa);
-
ptepa = pmap_ptepa(kernel_pmap, va);
ipte(ptepa);
stura(ptepa, pa);
@@ -978,8 +915,6 @@
void
pmap_kremove(vm_offset_t va)
{
- CTR1(KTR_PMAP, "pmap_kremove: va = %x", va);
-
ipte(pmap_ptepa(kernel_pmap, va));
}
@@ -988,8 +923,6 @@
{
vm_offset_t va, sva;
- CTR4(KTR_PMAP, "pmap_map: vap = %p, spa = %x, epa = %x, prot = %d", vap, spa, epa, prot);
-
va = sva = *vap;
for (; spa < epa; va += PAGE_SIZE, spa += PAGE_SIZE)
pmap_kenter(va, spa);
@@ -1005,8 +938,6 @@
pte_t pte;
int rv;
- CTR2(KTR_PMAP, "pmap_mincore: pmap = %p, va = %x", pmap, va);
-
pte = lura(pmap_ptepa(pmap, va));
if (!pte_valid(pte))
return (0);
@@ -1042,8 +973,6 @@
pv_entry_t pv;
int loops = 0;
- CTR2(KTR_PMAP, "pmap_page_exists_quick: pmap = %p, pa = %x", pmap, VM_PAGE_TO_PHYS(m));
-
if (m->flags & PG_FICTITIOUS)
return FALSE;
@@ -1063,7 +992,6 @@
vm_offset_t pa = VM_PAGE_TO_PHYS(m);
panic("GGGG: %s", __func__);
- CTR2(KTR_PMAP, "pmap_page_protect: pa = %x, prot = %d", pa, prot);
KASSERT((prot == VM_PROT_READ) || (prot == VM_PROT_NONE),
("pmap_page_protect: unexpected prot"));
@@ -1080,11 +1008,10 @@
void
pmap_pinit(pmap_t pmap)
{
+ static int color;
vm_page_t stpg;
int i;
- CTR1(KTR_PMAP, "pmap_pinit: pmap = %p", pmap);
-
if (pmap->pm_sto == NULL)
pmap->pm_sto = (ste_t *)
kmem_alloc_pageable(kernel_map, PAGE_SIZE);
@@ -1092,15 +1019,19 @@
if (pmap->pm_pteobj == NULL)
pmap->pm_pteobj = vm_object_allocate(OBJT_DEFAULT, NPTP + 1);
- VM_OBJECT_LOCK(pmap->pm_pteobj);
- stpg = vm_page_grab(pmap->pm_pteobj, NPTP,
- VM_ALLOC_NORMAL | VM_ALLOC_RETRY |
- VM_ALLOC_WIRED);
- vm_page_lock_queues();
- vm_page_flag_clear(stpg, PG_BUSY);
- stpg->valid = VM_PAGE_BITS_ALL;
- vm_page_unlock_queues();
- VM_OBJECT_UNLOCK(pmap->pm_pteobj);
+ for (;;) {
+ stpg = vm_page_alloc(NULL, color++,
+ VM_ALLOC_NORMAL | VM_ALLOC_WIRED |
+ VM_ALLOC_NOOBJ);
+ if (stpg == NULL) {
+ VM_WAIT;
+ } else {
+ vm_page_lock_queues();
+ vm_page_flag_clear(stpg, PG_BUSY);
+ stpg->valid = VM_PAGE_BITS_ALL;
+ vm_page_unlock_queues();
+ }
+ }
pmap_kenter((vm_offset_t)pmap->pm_sto, VM_PAGE_TO_PHYS(stpg));
for (i = 0; i < 4*NPTP; i++)
@@ -1114,8 +1045,6 @@
void
pmap_pinit0(pmap_t pmap)
{
- CTR1(KTR_PMAP, "pmap_pinit0: pmap = %p", pmap);
-
pmap->pm_sto = proc0sto;
pmap->pm_active = 0;
TAILQ_INIT(&pmap->pm_pvlist);
@@ -1131,7 +1060,6 @@
void
pmap_prefault(pmap_t pmap, vm_offset_t va, vm_map_entry_t entry)
{
- CTR3(KTR_PMAP, "pmap_prefault: pmap = %p, va = %x, entry = %p", pmap, va, entry);
/* optional */
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list