diff options
Diffstat (limited to 'usr/src/uts/sun4u/cpu/mach_cpu_module.c')
| -rw-r--r-- | usr/src/uts/sun4u/cpu/mach_cpu_module.c | 298 |
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); +} |
