summaryrefslogtreecommitdiff
path: root/usr/src/uts/sun4u/cpu/mach_cpu_module.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/sun4u/cpu/mach_cpu_module.c')
-rw-r--r--usr/src/uts/sun4u/cpu/mach_cpu_module.c298
1 files changed, 298 insertions, 0 deletions
diff --git a/usr/src/uts/sun4u/cpu/mach_cpu_module.c b/usr/src/uts/sun4u/cpu/mach_cpu_module.c
new file mode 100644
index 0000000000..c9dc47c061
--- /dev/null
+++ b/usr/src/uts/sun4u/cpu/mach_cpu_module.c
@@ -0,0 +1,298 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+#include <sys/cpu_module.h>
+#include <vm/page.h>
+#include <vm/seg_map.h>
+
+void
+cpu_fiximp(dnode_t dnode)
+{}
+
+void
+ce_err(void)
+{}
+
+void
+ce_err_tl1(void)
+{}
+
+void
+async_err(void)
+{}
+
+void
+cpu_flush_ecache(void)
+{}
+
+void
+cpu_disable_errors(void)
+{}
+
+/* It could be removed later if prom enables error handling */
+void
+cpu_enable_errors(void)
+{}
+
+/*ARGSUSED*/
+void
+cpu_faulted_enter(struct cpu *cp)
+{}
+
+/*ARGSUSED*/
+void
+cpu_faulted_exit(struct cpu *cp)
+{}
+
+/*ARGSUSED*/
+void
+cpu_ce_count_unum(struct async_flt *ecc, int len, char *unum)
+{}
+
+/*ARGSUSED*/
+void
+cpu_ce_scrub_mem_err(struct async_flt *ecc, boolean_t triedcpulogout)
+{}
+
+/*ARGSUSED*/
+void
+cpu_ce_log_err(struct async_flt *ecc, errorq_elem_t *eqep)
+{}
+
+/*ARGSUSED*/
+void
+cpu_ue_log_err(struct async_flt *ecc)
+{}
+
+/*ARGSUSED*/
+int
+ce_scrub_xdiag_recirc(struct async_flt *aflt, errorq_t *eqp,
+ errorq_elem_t *eqep, size_t afltoffset)
+{ return (0); }
+
+/*ARGSUSED*/
+char *
+flt_to_error_type(struct async_flt *aflt)
+{ return (NULL); }
+
+int
+cpu_aflt_size(void)
+{ return (0); }
+
+void
+cpu_async_panic_callb(void)
+{}
+
+/*ARGSUSED*/
+void
+cpu_check_allcpus(struct async_flt *aflt)
+{}
+
+/*ARGSUSED*/
+int
+cpu_get_mem_unum(int synd_stat, ushort_t synd, uint64_t afsr, uint64_t afar,
+ int cpuid, int flt_in_memory, ushort_t flt_status, char *buf,
+ int buflen, int *lenp)
+{ return (ENOTSUP); }
+
+/*ARGSUSED*/
+int
+cpu_get_mem_unum_aflt(int synd_stat, struct async_flt *aflt,
+ char *buf, int buflen, int *lenp)
+{ return (ENOTSUP); }
+
+/*ARGSUSED*/
+int
+cpu_get_cpu_unum(int cpuid, char *buf, int buflen, int *lenp)
+{ return (ENOTSUP); }
+
+/*ARGSUSED*/
+int
+cpu_get_mem_name(uint64_t synd, uint64_t *afsr, uint64_t afar,
+ char *buf, int buflen, int *lenp)
+{ return (ENOTSUP); }
+
+/*ARGSUSED*/
+size_t
+cpu_get_name_bufsize()
+{ return (0); }
+
+/*ARGSUSED*/
+int
+cpu_get_mem_info(uint64_t synd, uint64_t afar,
+ uint64_t *mem_sizep, uint64_t *seg_sizep, uint64_t *bank_sizep,
+ int *segsp, int *banksp, int *mcidp)
+{ return (ENOTSUP); }
+
+/*ARGSUSED*/
+void
+cpu_ereport_post(struct async_flt *aflt)
+{}
+
+/*ARGSUSED*/
+void
+cpu_run_bus_error_handlers(struct async_flt *aflt, int expected)
+{}
+
+void
+cpu_errorq_dispatch(char *error_class, void *payload, size_t payload_sz,
+ errorq_t *eqp, uint_t flag)
+{}
+
+void
+clr_datapath(void)
+{}
+
+/*ARGSUSED*/
+void
+read_ecc_data(struct async_flt *ecc, short verbose, short ce_err)
+{}
+
+/*ARGSUSED*/
+void
+itlb_rd_entry(uint_t entry, tte_t *tte, uint64_t *va_tag)
+{}
+
+/*ARGSUSED*/
+void
+dtlb_rd_entry(uint_t entry, tte_t *tte, uint64_t *va_tag)
+{}
+
+/*
+ * tick operations
+ */
+
+void
+cpu_clearticknpt(void)
+{ }
+
+/*
+ * Ecache scrub operations
+ */
+void
+cpu_init_cache_scrub(void)
+{}
+
+/*ARGSUSED*/
+void
+cpu_busy_ecache_scrub(struct cpu *cp)
+{}
+
+/*ARGSUSED*/
+void
+cpu_idle_ecache_scrub(struct cpu *cp)
+{}
+
+/* ARGSUSED */
+void
+cpu_check_ce(int flag, uint64_t pa, caddr_t va, uint_t bpp)
+{}
+
+/* ARGSUSED */
+void
+prefetch_page_w(void *pp)
+{
+#define ECACHE_SUBBLOCKS_PER_PAGE 2
+#define ECACHE_SUBBLOCK_SIZE_BYTES 64
+#define ECACHE_PAGE_BYTE_MAX \
+ (ECACHE_SUBBLOCKS_PER_PAGE*ECACHE_SUBBLOCK_SIZE_BYTES+1)
+
+ /*
+ * The following line is intended to cause an error
+ * whenever the sun4u page_t grows beyond 128
+ * bytes.
+ *
+ * If you get an error here, you'll need to change
+ * the 'prefetch_page_w' assembly language code
+ * (see also prefetch_page_w prologue comment)
+ */
+ /*LINTED*/
+ volatile int garbage[ECACHE_PAGE_BYTE_MAX - sizeof (page_t)];
+}
+
+/* ARGSUSED */
+void
+prefetch_page_r(void *pp)
+{
+#define ECACHE_SUBBLOCKS_PER_PAGE 2
+#define ECACHE_SUBBLOCK_SIZE_BYTES 64
+#define ECACHE_PAGE_BYTE_MAX \
+ (ECACHE_SUBBLOCKS_PER_PAGE*ECACHE_SUBBLOCK_SIZE_BYTES+1)
+
+ /*
+ * The following line is intended to cause an error
+ * whenever the sun4u page_t grows beyond 128
+ * bytes.
+ *
+ * If you get an error here, you'll need to change
+ * the 'prefetch_page_r' assembly language code
+ * (see also prefetch_page_w prologue comment)
+ */
+ /*LINTED*/
+ volatile int garbage[ECACHE_PAGE_BYTE_MAX - sizeof (page_t)];
+}
+
+
+#ifdef SEGKPM_SUPPORT
+#define SMAP_SIZE 80
+#else
+#define SMAP_SIZE 56
+#endif
+
+/* ARGSUSED */
+void
+prefetch_smap_w(void *smp)
+{
+
+ /*
+ * The following lines are intended to cause an error
+ * whenever the smap object size changes from the current
+ * size of 48 bytes. If you get an error here, you'll
+ * need to update the code in the 'prefetch_smap_w' assembly
+ * language code.
+ */
+ /*LINTED*/
+ volatile int smap_size_changed [SMAP_SIZE - sizeof (struct smap) + 1];
+ volatile int smap_size_changed2 [sizeof (struct smap) - SMAP_SIZE + 1];
+}
+
+void
+kdi_flush_caches(void)
+{}
+
+/*ARGSUSED*/
+void
+mmu_init_kernel_pgsz(struct hat *hat)
+{
+}
+
+size_t
+mmu_get_kernel_lpsize(size_t value)
+{
+ return (value);
+}