summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornwhitehorn <nwhitehorn@FreeBSD.org>2013-09-09 12:51:24 +0000
committernwhitehorn <nwhitehorn@FreeBSD.org>2013-09-09 12:51:24 +0000
commitd54687609ce697afeb64e5cdd57396c563fcf8c8 (patch)
treee46bba7ebaba977261419750df96890ee498b9b6
parent40b0e2de83eaed293efb6d1a6202b71aa813e4af (diff)
downloadFreeBSD-src-d54687609ce697afeb64e5cdd57396c563fcf8c8.zip
FreeBSD-src-d54687609ce697afeb64e5cdd57396c563fcf8c8.tar.gz
Add POWER CPUs to the kernel's knowledge. This does not imply we currently
actually run on any machines with POWER CPUs but avoids closing that door unnecessarily. Approved by: re (kib)
-rw-r--r--sys/powerpc/aim/mmu_oea64.c7
-rw-r--r--sys/powerpc/aim/mmu_oea64.h1
-rw-r--r--sys/powerpc/powerpc/cpu.c14
3 files changed, 17 insertions, 5 deletions
diff --git a/sys/powerpc/aim/mmu_oea64.c b/sys/powerpc/aim/mmu_oea64.c
index ba1da12..e93c655 100644
--- a/sys/powerpc/aim/mmu_oea64.c
+++ b/sys/powerpc/aim/mmu_oea64.c
@@ -263,7 +263,7 @@ uintptr_t moea64_scratchpage_pte[2];
struct mtx moea64_scratchpage_mtx;
uint64_t moea64_large_page_mask = 0;
-int moea64_large_page_size = 0;
+uint64_t moea64_large_page_size = 0;
int moea64_large_page_shift = 0;
/*
@@ -546,12 +546,9 @@ moea64_probe_large_page(void)
powerpc_sync(); isync();
/* FALLTHROUGH */
- case IBMCELLBE:
+ default:
moea64_large_page_size = 0x1000000; /* 16 MB */
moea64_large_page_shift = 24;
- break;
- default:
- moea64_large_page_size = 0;
}
moea64_large_page_mask = moea64_large_page_size - 1;
diff --git a/sys/powerpc/aim/mmu_oea64.h b/sys/powerpc/aim/mmu_oea64.h
index 101181d..111d04d 100644
--- a/sys/powerpc/aim/mmu_oea64.h
+++ b/sys/powerpc/aim/mmu_oea64.h
@@ -70,6 +70,7 @@ extern u_int moea64_pte_overflow;
extern struct pvo_head *moea64_pvo_table;
extern int moea64_large_page_shift;
+extern uint64_t moea64_large_page_size;
extern u_int moea64_pteg_count;
extern u_int moea64_pteg_mask;
diff --git a/sys/powerpc/powerpc/cpu.c b/sys/powerpc/powerpc/cpu.c
index d67f359..a4467a9 100644
--- a/sys/powerpc/powerpc/cpu.c
+++ b/sys/powerpc/powerpc/cpu.c
@@ -127,6 +127,20 @@ static const struct cputab models[] = {
{ "IBM PowerPC 970MP", IBM970MP, REVFMT_MAJMIN,
PPC_FEATURE_64 | PPC_FEATURE_HAS_ALTIVEC | PPC_FEATURE_HAS_FPU,
cpu_970_setup },
+ { "IBM POWER4", IBMPOWER4, REVFMT_MAJMIN,
+ PPC_FEATURE_64 | PPC_FEATURE_HAS_FPU, NULL },
+ { "IBM POWER4+", IBMPOWER4PLUS, REVFMT_MAJMIN,
+ PPC_FEATURE_64 | PPC_FEATURE_HAS_FPU, NULL },
+ { "IBM POWER5", IBMPOWER5, REVFMT_MAJMIN,
+ PPC_FEATURE_64 | PPC_FEATURE_HAS_FPU, NULL },
+ { "IBM POWER5+", IBMPOWER5PLUS, REVFMT_MAJMIN,
+ PPC_FEATURE_64 | PPC_FEATURE_HAS_FPU, NULL },
+ { "IBM POWER6", IBMPOWER6, REVFMT_MAJMIN,
+ PPC_FEATURE_64 | PPC_FEATURE_HAS_ALTIVEC | PPC_FEATURE_HAS_FPU,
+ NULL },
+ { "IBM POWER7", IBMPOWER7, REVFMT_MAJMIN,
+ PPC_FEATURE_64 | PPC_FEATURE_HAS_ALTIVEC | PPC_FEATURE_HAS_FPU,
+ NULL },
{ "Motorola PowerPC 7400", MPC7400, REVFMT_MAJMIN,
PPC_FEATURE_HAS_ALTIVEC | PPC_FEATURE_HAS_FPU, cpu_6xx_setup },
{ "Motorola PowerPC 7410", MPC7410, REVFMT_MAJMIN,
OpenPOWER on IntegriCloud