OpenSolaris_b135/uts/sun4u/cpu/mach_cpu_module.c

Compare this file to the similar file:
Show the results in this format:

/*
 * 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(pnode_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_sid(char *unum, char *buf, int buflen, int *lenp)
{ return (ENOTSUP); }

/*ARGSUSED*/
int
cpu_get_mem_offset(uint64_t flt_addr, uint64_t *offp)
{ return (ENOTSUP); }

/*ARGSUSED*/
int
cpu_get_mem_addr(char *unum, char *sid, uint64_t offset,
    uint64_t *addrp)
{ return (ENOTSUP); }

/*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);
}