summaryrefslogtreecommitdiffstats
path: root/sys/mips
diff options
context:
space:
mode:
authorjchandra <jchandra@FreeBSD.org>2011-07-16 20:31:29 +0000
committerjchandra <jchandra@FreeBSD.org>2011-07-16 20:31:29 +0000
commitc7527da8368df2fa54418c4919a8f79521a02946 (patch)
treeb24da6314f56d9703c2614ab82a6dc93528ad457 /sys/mips
parent87a4ad12f030ac678b2f894a8a168c4b219e3eeb (diff)
downloadFreeBSD-src-c7527da8368df2fa54418c4919a8f79521a02946.zip
FreeBSD-src-c7527da8368df2fa54418c4919a8f79521a02946.tar.gz
MIPS changes for Netlogic XLP support.
This patch adds support for the Netlogic XLP mips64 processors in the common MIPS code. The changes are : - Add CPU_NLM processor type - Add cases for CPU_NLM, mostly were CPU_RMI is used. - Update cache flush changes for CPU_NLM - Add kernel build configuration files for xLP. In collaboration with: Prabhath Raman <prabhathpr at netlogicmicro com> Approved by: bz(re), jmallett, imp(mips)
Diffstat (limited to 'sys/mips')
-rw-r--r--sys/mips/conf/XLP93
-rw-r--r--sys/mips/conf/XLP6495
-rw-r--r--sys/mips/conf/XLPN3294
-rw-r--r--sys/mips/include/bus.h2
-rw-r--r--sys/mips/include/cpufunc.h4
-rw-r--r--sys/mips/include/intr_machdep.h2
-rw-r--r--sys/mips/mips/cache.c20
-rw-r--r--sys/mips/mips/cache_mipsNN.c25
-rw-r--r--sys/mips/mips/cpu.c6
-rw-r--r--sys/mips/mips/exception.S6
-rw-r--r--sys/mips/mips/locore.S2
-rw-r--r--sys/mips/mips/machdep.c2
-rw-r--r--sys/mips/nlm/cms.c9
-rw-r--r--sys/mips/nlm/std.xlp10
-rw-r--r--sys/mips/nlm/xlp_machdep.c6
15 files changed, 350 insertions, 26 deletions
diff --git a/sys/mips/conf/XLP b/sys/mips/conf/XLP
new file mode 100644
index 0000000..6843534
--- /dev/null
+++ b/sys/mips/conf/XLP
@@ -0,0 +1,93 @@
+# XLP -- Generic kernel configuration file for FreeBSD/mips
+#
+# For more information on this file, please read the handbook section on
+# Kernel Configuration Files:
+#
+# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
+#
+# The handbook is also available locally in /usr/share/doc/handbook
+# if you've installed the doc distribution, otherwise always see the
+# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the
+# latest information.
+#
+# An exhaustive list of options and more detailed explanations of the
+# device lines is also present in the ../../conf/NOTES and NOTES files.
+# If you are in doubt as to the purpose or necessity of a line, check first
+# in NOTES.
+#
+# $FreeBSD$
+
+machine mips mipseb
+ident XLP
+
+options ISA_MIPS32
+makeoptions KERNLOADADDR=0x80100000
+
+include "../nlm/std.xlp"
+makeoptions MODULES_OVERRIDE=""
+makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
+#profile 2
+makeoptions TRAMPLOADADDR=0xffffffff85000000
+makeoptions TRAMP_ARCH_FLAGS="-mabi=64 -march=mips64"
+
+options SCHED_ULE # ULE scheduler
+#options VERBOSE_SYSINIT
+#options SCHED_4BSD # 4BSD scheduler
+options SMP
+options PREEMPTION # Enable kernel thread preemption
+#options FULL_PREEMPTION # Enable kernel thread preemption
+options INET # InterNETworking
+options INET6 # IPv6 communications protocols
+options FFS # Berkeley Fast Filesystem
+#options SOFTUPDATES # Enable FFS soft updates support
+options UFS_ACL # Support for access control lists
+options UFS_DIRHASH # Improve performance on big directories
+options NFSCL
+options NFS_ROOT
+options MSDOSFS #MSDOS Filesystem
+#
+#options BOOTP
+#options BOOTP_NFSROOT
+#options BOOTP_NFSV3
+#options BOOTP_WIRED_TO=nlge0
+#options BOOTP_COMPAT
+#options ROOTDEVNAME=\"nfs:10.1.1.8:/usr/extra/nfsroot\"
+#
+options MD_ROOT # MD is a potential root device
+options MD_ROOT_SIZE=27000
+options ROOTDEVNAME=\"ufs:md0\"
+options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
+options HZ=1000
+options NO_SWAPPING
+
+#Debugging options
+options KTRACE # ktrace(1) support
+options DDB
+options KDB
+options GDB
+options BREAK_TO_DEBUGGER
+options ALT_BREAK_TO_DEBUGGER
+#options DEADLKRES #Enable the deadlock resolver
+#options INVARIANTS #Enable calls of extra sanity checking
+#options INVARIANT_SUPPORT #Extra sanity checks of internal structures, required by INVARIANTS
+#options WITNESS #Enable checks to detect deadlocks and cycles
+#options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed
+#options KTR # ktr(4) and ktrdump(8) support
+#options KTR_COMPILE=(KTR_LOCK|KTR_PROC|KTR_INTR|KTR_CALLOUT|KTR_UMA|KTR_SYSC)
+#options KTR_ENTRIES=131072
+#options LOCK_DEBUG
+#options LOCK_PROFILING
+
+
+# Pseudo
+device loop
+device random
+device md
+device pty
+device bpf
+
+# UART
+device uart
+
+# Network
+device ether
diff --git a/sys/mips/conf/XLP64 b/sys/mips/conf/XLP64
new file mode 100644
index 0000000..997a1f6
--- /dev/null
+++ b/sys/mips/conf/XLP64
@@ -0,0 +1,95 @@
+# XLP64 -- Generic kernel configuration file for FreeBSD/mips
+#
+# For more information on this file, please read the handbook section on
+# Kernel Configuration Files:
+#
+# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
+#
+# The handbook is also available locally in /usr/share/doc/handbook
+# if you've installed the doc distribution, otherwise always see the
+# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the
+# latest information.
+#
+# An exhaustive list of options and more detailed explanations of the
+# device lines is also present in the ../../conf/NOTES and NOTES files.
+# If you are in doubt as to the purpose or necessity of a line, check first
+# in NOTES.
+#
+# $FreeBSD$
+
+machine mips mips64eb
+ident XLP64
+
+options ISA_MIPS64
+makeoptions ARCH_FLAGS="-march=mips64 -mabi=64"
+makeoptions KERNLOADADDR=0xffffffff80100000
+
+include "../nlm/std.xlp"
+
+makeoptions MODULES_OVERRIDE=""
+makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
+#profile 2
+makeoptions TRAMPLOADADDR=0xffffffff85000000
+makeoptions TRAMP_ARCH_FLAGS="-mabi=64 -march=mips64"
+
+options SCHED_ULE # ULE scheduler
+#options VERBOSE_SYSINIT
+#options SCHED_4BSD # 4BSD scheduler
+options SMP
+options PREEMPTION # Enable kernel thread preemption
+#options FULL_PREEMPTION # Enable kernel thread preemption
+options INET # InterNETworking
+options INET6 # IPv6 communications protocols
+options FFS # Berkeley Fast Filesystem
+#options SOFTUPDATES # Enable FFS soft updates support
+options UFS_ACL # Support for access control lists
+options UFS_DIRHASH # Improve performance on big directories
+options NFSCL
+options NFS_ROOT
+options MSDOSFS #MSDOS Filesystem
+#
+#options BOOTP
+#options BOOTP_NFSROOT
+#options BOOTP_NFSV3
+#options BOOTP_WIRED_TO=nlge0
+#options BOOTP_COMPAT
+#options ROOTDEVNAME=\"nfs:10.1.1.8:/usr/extra/nfsroot\"
+#
+options MD_ROOT # MD is a potential root device
+options MD_ROOT_SIZE=27000
+options ROOTDEVNAME=\"ufs:md0\"
+options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
+options HZ=1000
+options NO_SWAPPING
+
+#Debugging options
+options KTRACE # ktrace(1) support
+options DDB
+options KDB
+options GDB
+options BREAK_TO_DEBUGGER
+options ALT_BREAK_TO_DEBUGGER
+#options DEADLKRES #Enable the deadlock resolver
+#options INVARIANTS #Enable calls of extra sanity checking
+#options INVARIANT_SUPPORT #Extra sanity checks of internal structures, required by INVARIANTS
+#options WITNESS #Enable checks to detect deadlocks and cycles
+#options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed
+#options KTR # ktr(4) and ktrdump(8) support
+#options KTR_COMPILE=(KTR_LOCK|KTR_PROC|KTR_INTR|KTR_CALLOUT|KTR_UMA|KTR_SYSC)
+#options KTR_ENTRIES=131072
+#options LOCK_DEBUG
+#options LOCK_PROFILING
+
+
+# Pseudo
+device loop
+device random
+device md
+device pty
+device bpf
+
+# UART
+device uart
+
+# Network
+device ether
diff --git a/sys/mips/conf/XLPN32 b/sys/mips/conf/XLPN32
new file mode 100644
index 0000000..06c2efc
--- /dev/null
+++ b/sys/mips/conf/XLPN32
@@ -0,0 +1,94 @@
+# XLPN32 -- Generic kernel configuration file for FreeBSD/mips
+#
+# For more information on this file, please read the handbook section on
+# Kernel Configuration Files:
+#
+# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
+#
+# The handbook is also available locally in /usr/share/doc/handbook
+# if you've installed the doc distribution, otherwise always see the
+# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the
+# latest information.
+#
+# An exhaustive list of options and more detailed explanations of the
+# device lines is also present in the ../../conf/NOTES and NOTES files.
+# If you are in doubt as to the purpose or necessity of a line, check first
+# in NOTES.
+#
+# $FreeBSD$
+
+machine mips mipsn32eb
+ident XLPN32
+
+options ISA_MIPS64
+makeoptions ARCH_FLAGS="-march=mips64 -mabi=n32"
+makeoptions KERNLOADADDR=0x80100000
+
+include "../nlm/std.xlp"
+makeoptions MODULES_OVERRIDE=""
+makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
+#profile 2
+makeoptions TRAMPLOADADDR=0xffffffff85000000
+makeoptions TRAMP_ARCH_FLAGS="-mabi=64 -march=mips64"
+
+options SCHED_ULE # ULE scheduler
+#options VERBOSE_SYSINIT
+#options SCHED_4BSD # 4BSD scheduler
+options SMP
+options PREEMPTION # Enable kernel thread preemption
+#options FULL_PREEMPTION # Enable kernel thread preemption
+options INET # InterNETworking
+options INET6 # IPv6 communications protocols
+options FFS # Berkeley Fast Filesystem
+#options SOFTUPDATES # Enable FFS soft updates support
+options UFS_ACL # Support for access control lists
+options UFS_DIRHASH # Improve performance on big directories
+options NFSCL
+options NFS_ROOT
+options MSDOSFS #MSDOS Filesystem
+#
+#options BOOTP
+#options BOOTP_NFSROOT
+#options BOOTP_NFSV3
+#options BOOTP_WIRED_TO=nlge0
+#options BOOTP_COMPAT
+#options ROOTDEVNAME=\"nfs:10.1.1.8:/usr/extra/nfsroot\"
+#
+options MD_ROOT # MD is a potential root device
+options MD_ROOT_SIZE=27000
+options ROOTDEVNAME=\"ufs:md0\"
+options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
+options HZ=1000
+options NO_SWAPPING
+
+#Debugging options
+options KTRACE # ktrace(1) support
+options DDB
+options KDB
+options GDB
+options BREAK_TO_DEBUGGER
+options ALT_BREAK_TO_DEBUGGER
+#options DEADLKRES #Enable the deadlock resolver
+#options INVARIANTS #Enable calls of extra sanity checking
+#options INVARIANT_SUPPORT #Extra sanity checks of internal structures, required by INVARIANTS
+#options WITNESS #Enable checks to detect deadlocks and cycles
+#options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed
+#options KTR # ktr(4) and ktrdump(8) support
+#options KTR_COMPILE=(KTR_LOCK|KTR_PROC|KTR_INTR|KTR_CALLOUT|KTR_UMA|KTR_SYSC)
+#options KTR_ENTRIES=131072
+#options LOCK_DEBUG
+#options LOCK_PROFILING
+
+
+# Pseudo
+device loop
+device random
+device md
+device pty
+device bpf
+
+# UART
+device uart
+
+# Network
+device ether
diff --git a/sys/mips/include/bus.h b/sys/mips/include/bus.h
index af83d36..1745b0f 100644
--- a/sys/mips/include/bus.h
+++ b/sys/mips/include/bus.h
@@ -721,7 +721,7 @@ void __bs_c(f,_bs_c_8) (void *t, bus_space_handle_t bsh1, \
DECLARE_BUS_SPACE_PROTOTYPES(generic);
extern bus_space_tag_t mips_bus_space_generic;
/* Special bus space for RMI processors */
-#ifdef CPU_RMI
+#if defined(CPU_RMI) || defined (CPU_NLM)
extern bus_space_tag_t rmi_bus_space;
extern bus_space_tag_t rmi_pci_bus_space;
#endif
diff --git a/sys/mips/include/cpufunc.h b/sys/mips/include/cpufunc.h
index f680970..f5c24b4 100644
--- a/sys/mips/include/cpufunc.h
+++ b/sys/mips/include/cpufunc.h
@@ -254,6 +254,10 @@ MIPS_RW32_COP0_SEL(config3, MIPS_COP_0_CONFIG, 3);
#ifdef CPU_CNMIPS
MIPS_RW32_COP0_SEL(config4, MIPS_COP_0_CONFIG, 4);
#endif
+#ifdef CPU_NLM
+MIPS_RW32_COP0_SEL(config6, MIPS_COP_0_CONFIG, 6);
+MIPS_RW32_COP0_SEL(config7, MIPS_COP_0_CONFIG, 7);
+#endif
MIPS_RW32_COP0(count, MIPS_COP_0_COUNT);
MIPS_RW32_COP0(index, MIPS_COP_0_TLB_INDEX);
MIPS_RW32_COP0(wired, MIPS_COP_0_TLB_WIRED);
diff --git a/sys/mips/include/intr_machdep.h b/sys/mips/include/intr_machdep.h
index 3d66e63..f224517 100644
--- a/sys/mips/include/intr_machdep.h
+++ b/sys/mips/include/intr_machdep.h
@@ -29,7 +29,7 @@
#ifndef _MACHINE_INTR_MACHDEP_H_
#define _MACHINE_INTR_MACHDEP_H_
-#ifdef CPU_RMI
+#if defined(CPU_RMI) || defined(CPU_NLM)
#define XLR_MAX_INTR 64
#else
#define NHARD_IRQS 6
diff --git a/sys/mips/mips/cache.c b/sys/mips/mips/cache.c
index e54a3e1..3fafede 100644
--- a/sys/mips/mips/cache.c
+++ b/sys/mips/mips/cache.c
@@ -80,6 +80,11 @@ __FBSDID("$FreeBSD$");
struct mips_cache_ops mips_cache_ops;
+static void
+cache_noop(vm_offset_t va, vm_size_t size)
+{
+}
+
void
mips_config_cache(struct mips_cpuinfo * cpuinfo)
{
@@ -94,8 +99,13 @@ mips_config_cache(struct mips_cpuinfo * cpuinfo)
break;
case 32:
mips_cache_ops.mco_icache_sync_all = mipsNN_icache_sync_all_32;
+#ifdef CPU_NLM
+ mips_cache_ops.mco_icache_sync_range =
+ mipsNN_icache_sync_range_index_32;
+#else
mips_cache_ops.mco_icache_sync_range =
mipsNN_icache_sync_range_32;
+#endif
mips_cache_ops.mco_icache_sync_range_index =
mipsNN_icache_sync_range_index_32;
break;
@@ -143,16 +153,26 @@ mips_config_cache(struct mips_cpuinfo * cpuinfo)
mips_cache_ops.mco_pdcache_wbinv_all =
mips_cache_ops.mco_intern_pdcache_wbinv_all =
mipsNN_pdcache_wbinv_all_32;
+#ifdef CPU_NLM
+ mips_cache_ops.mco_pdcache_wbinv_range =
+ mipsNN_pdcache_wbinv_range_index_32;
+#else
mips_cache_ops.mco_pdcache_wbinv_range =
mipsNN_pdcache_wbinv_range_32;
+#endif
mips_cache_ops.mco_pdcache_wbinv_range_index =
mips_cache_ops.mco_intern_pdcache_wbinv_range_index =
mipsNN_pdcache_wbinv_range_index_32;
mips_cache_ops.mco_pdcache_inv_range =
mipsNN_pdcache_inv_range_32;
+#if defined(CPU_RMI) || defined(CPU_NLM)
+ mips_cache_ops.mco_pdcache_wb_range =
+ mips_cache_ops.mco_intern_pdcache_wb_range = cache_noop;
+#else
mips_cache_ops.mco_pdcache_wb_range =
mips_cache_ops.mco_intern_pdcache_wb_range =
mipsNN_pdcache_wb_range_32;
+#endif
break;
#ifdef CPU_CNMIPS
case 128:
diff --git a/sys/mips/mips/cache_mipsNN.c b/sys/mips/mips/cache_mipsNN.c
index 57ea719..98014b1 100644
--- a/sys/mips/mips/cache_mipsNN.c
+++ b/sys/mips/mips/cache_mipsNN.c
@@ -54,15 +54,36 @@ __FBSDID("$FreeBSD$");
#define round_line32(x) (((x) + 31) & ~31)
#define trunc_line32(x) ((x) & ~31)
+#if defined(CPU_NLM)
+static __inline void
+xlp_sync(void)
+{
+ __asm __volatile (
+ ".set push \n"
+ ".set noreorder \n"
+ ".set mips64 \n"
+ "dla $8, 1f \n"
+ "/* jr.hb $8 */ \n"
+ ".word 0x1000408 \n"
+ "nop \n"
+ "1: nop \n"
+ ".set pop \n"
+ : : : "$8");
+}
+#endif
-#ifdef SB1250_PASS1
+#if defined(SB1250_PASS1)
#define SYNC __asm volatile("sync; sync")
+#elif defined(CPU_NLM)
+#define SYNC xlp_sync()
#else
#define SYNC __asm volatile("sync")
#endif
-#ifdef CPU_CNMIPS
+#if defined(CPU_CNMIPS)
#define SYNCI mips_sync_icache();
+#elif defined(CPU_NLM)
+#define SYNCI xlp_sync()
#else
#define SYNCI
#endif
diff --git a/sys/mips/mips/cpu.c b/sys/mips/mips/cpu.c
index cfb5ddb..e87b7a0 100644
--- a/sys/mips/mips/cpu.c
+++ b/sys/mips/mips/cpu.c
@@ -101,8 +101,14 @@ mips_get_identity(struct mips_cpuinfo *cpuinfo)
/* Learn TLB size and L1 cache geometry. */
cfg1 = mips_rd_config1();
+#ifndef CPU_NLM
cpuinfo->tlb_nentries =
((cfg1 & MIPS_CONFIG1_TLBSZ_MASK) >> MIPS_CONFIG1_TLBSZ_SHIFT) + 1;
+#else
+ /* Account for Extended TLB entries in XLP */
+ tmp = mips_rd_config6();
+ cpuinfo->tlb_nentries = ((tmp >> 16) & 0xffff) + 1;
+#endif
/* Add extended TLB size information from config4. */
#if defined(CPU_CNMIPS)
diff --git a/sys/mips/mips/exception.S b/sys/mips/mips/exception.S
index da32a77..7b64462 100644
--- a/sys/mips/mips/exception.S
+++ b/sys/mips/mips/exception.S
@@ -228,7 +228,7 @@ SlowFault:
and a0, a0, a2 ; \
mtc0 a0, MIPS_COP_0_STATUS ; \
ITLBNOPFIX
-#elif defined(CPU_RMI)
+#elif defined(CPU_RMI) || defined(CPU_NLM)
#define CLEAR_STATUS \
mfc0 a0, MIPS_COP_0_STATUS ;\
li a2, (MIPS_SR_KX | MIPS_SR_UX | MIPS_SR_COP_2_BIT) ; \
@@ -470,7 +470,7 @@ NNON_LEAF(MipsUserGenException, CALLFRAME_SIZ, ra)
and t0, a0, ~(MIPS_SR_COP_1_BIT | MIPS_SR_EXL | MIPS3_SR_KSU_MASK | MIPS_SR_INT_IE)
#if defined(CPU_CNMIPS)
or t0, t0, (MIPS_SR_KX | MIPS_SR_SX | MIPS_SR_UX | MIPS_SR_PX)
-#elif defined(CPU_RMI)
+#elif defined(CPU_RMI) || defined(CPU_NLM)
or t0, t0, (MIPS_SR_KX | MIPS_SR_UX | MIPS_SR_COP_2_BIT)
#endif
mtc0 t0, MIPS_COP_0_STATUS
@@ -688,7 +688,7 @@ NNON_LEAF(MipsUserIntr, CALLFRAME_SIZ, ra)
and t0, a0, ~(MIPS_SR_COP_1_BIT | MIPS_SR_EXL | MIPS_SR_INT_IE | MIPS3_SR_KSU_MASK)
#ifdef CPU_CNMIPS
or t0, t0, (MIPS_SR_KX | MIPS_SR_SX | MIPS_SR_UX | MIPS_SR_PX)
-#elif defined(CPU_RMI)
+#elif defined(CPU_RMI) || defined(CPU_NLM)
or t0, t0, (MIPS_SR_KX | MIPS_SR_UX | MIPS_SR_COP_2_BIT)
#endif
mtc0 t0, MIPS_COP_0_STATUS
diff --git a/sys/mips/mips/locore.S b/sys/mips/mips/locore.S
index 9f685eb..4b28f19 100644
--- a/sys/mips/mips/locore.S
+++ b/sys/mips/mips/locore.S
@@ -99,7 +99,7 @@ VECTOR(_locore, unknown)
/* Reset these bits */
li t0, ~(MIPS_SR_DE | MIPS_SR_SOFT_RESET | MIPS_SR_ERL | MIPS_SR_EXL | MIPS_SR_INT_IE)
-#elif defined (CPU_RMI)
+#elif defined (CPU_RMI) || defined (CPU_NLM)
/* Set these bits */
li t1, (MIPS_SR_COP_2_BIT | MIPS_SR_COP_0_BIT | MIPS_SR_KX | MIPS_SR_UX)
diff --git a/sys/mips/mips/machdep.c b/sys/mips/mips/machdep.c
index 4c80ea0..f7e5248 100644
--- a/sys/mips/mips/machdep.c
+++ b/sys/mips/mips/machdep.c
@@ -338,7 +338,7 @@ mips_vector_init(void)
bcopy(MipsTLBMiss, (void *)MIPS_UTLB_MISS_EXC_VEC,
MipsTLBMissEnd - MipsTLBMiss);
-#if defined(CPU_CNMIPS) || defined(CPU_RMI)
+#if defined(CPU_CNMIPS) || defined(CPU_RMI) || defined(CPU_NLM)
/* Fake, but sufficient, for the 32-bit with 64-bit hardware addresses */
bcopy(MipsTLBMiss, (void *)MIPS3_XTLB_MISS_EXC_VEC,
MipsTLBMissEnd - MipsTLBMiss);
diff --git a/sys/mips/nlm/cms.c b/sys/mips/nlm/cms.c
index c8a06f2..fb03d80 100644
--- a/sys/mips/nlm/cms.c
+++ b/sys/mips/nlm/cms.c
@@ -257,13 +257,14 @@ xlp_handle_msg_vc(int vc, int max_msgs)
continue;
}
he = &msgmap[srcid];
- if(he->action == NULL) {
+ if(he->action != NULL)
+ (he->action)(vc, size, code, srcid, &msg, he->arg);
+#if 0 /* debug */
+ else
printf("[%s]: No Handler for message from stn_id=%d,"
" vc=%d, size=%d, msg0=%jx, dropping message\n",
__func__, srcid, vc, size, (uintmax_t)msg.msg[0]);
- continue;
- }
- (he->action)(vc, size, code, srcid, &msg, he->arg);
+#endif
}
return (i);
diff --git a/sys/mips/nlm/std.xlp b/sys/mips/nlm/std.xlp
index 7b5eed5..01c9245 100644
--- a/sys/mips/nlm/std.xlp
+++ b/sys/mips/nlm/std.xlp
@@ -1,12 +1,4 @@
# $FreeBSD$
files "../nlm/files.xlp"
-cpu CPU_NLMXLP
+cpu CPU_NLM
-#
-# XXXMIPS: It's a stub, isn't it?
-#
-#option HW_PAGEWALKER
-#option MMU_HASH_MODE # enables hash based lookup into extended TLBs
-#option MMU_CLOCK_GATING # enables clock gating on MMU
-#option MMU_GLOBAL_MODE # enables global mode of sharing all TLBs with all h/w threads
-#option NOFPU
diff --git a/sys/mips/nlm/xlp_machdep.c b/sys/mips/nlm/xlp_machdep.c
index 4bf92462..6b4bde4 100644
--- a/sys/mips/nlm/xlp_machdep.c
+++ b/sys/mips/nlm/xlp_machdep.c
@@ -214,8 +214,7 @@ xlp_parse_mmu_options(void)
unsupp:
printf("ERROR : Unsupported CPU mask [use 1,2 or 4 threads per core].\n"
- "\tcore0 thread mask [%lx], boot cpu mask [%lx]\n"
- "\tUsing default, 16 TLB entries per CPU, split mode\n",
+ "\tcore0 thread mask [%lx], boot cpu mask [%lx].\n",
(u_long)core0_thr_mask, (u_long)cpu_map);
panic("Invalid CPU mask - halting.\n");
return;
@@ -495,8 +494,6 @@ platform_start(__register_t a0 __unused,
xlp_pic_init();
mips_timer_init_params(xlp_cpu_frequency, 0);
-
- printf("Platform specific startup now completes\n");
}
void
@@ -630,6 +627,7 @@ platform_ipi_intrnum(void)
void
platform_ipi_send(int cpuid)
{
+
nlm_pic_send_ipi(xlp_pic_base, 0, xlp_cpuid_to_hwtid[cpuid],
platform_ipi_intrnum(), 0);
}
OpenPOWER on IntegriCloud