VIRTUTECH CONFIDENTIAL    Previous - Up - Next

sparc_u3

Implemented By
ultrasparc-iii, ultrasparc-iii-i, ultrasparc-iii-plus, ultrasparc-iv, ultrasparc-iv-plus
Description

This interface contains UltraSPARC III specific functions. Currently, the only one is the cause_error function, which is used to cause errors. Its arguments are the following:

obj is the CPU to which the error should be reported.

afsr_status_bit is the number of the bit in the Asynchronous Fault Status Register that this error sets, or –1 if none. Valid values are 33 through 53.

trap is the trap that should be taken (if enabled; see below), or –1 if none. Valid values are Instruction_Access_Error, Data_Access_Error, Corrected_ECC_Error, and Fast_ECC_Error.

estate_error_enable_bit is the number of the bit in the E-cache Error Enable Register (ESTATE_ERROR_EN) that controls whether the trap in the trap argument should be taken (unless it is –1), or –1 if none.

m_synd_priority is the priority level of the MTag ECC syndrome data supplied in the m_synd argument, or 0 if none. Valid values are 0, 1, and 2.

m_synd is the 4-bit MTags ECC syndrome data, or 0 if none.

e_synd_priority is the priority level of the system bus and E-cache ECC syndrome data supplied in the e_synd argument, or 0 if none. Valid values are 0, 1, and 2.

e_synd is the 9-bit system bus and E-cache ECC syndrome data, or 0 if none.

afar_priority is the priority level of the afar argument, or 0 if none. Valid values are 0 through 4.

afar should contain the address that will be written to the Asynchronous Fault Address Register (AFAR), given that the afar_priority is high enough.

set_priv should be non-zero if the AFSR.PRIV bit should be set if the PSTATE.PRIV bit is set at the time of the error.

set_me should be non-zero if the AFSR.ME bit should be set if the AFSR bit indicated by the afsr_status_bit argument already was set.

typedef void (*sparc_u3_error_t)(conf_object_t *obj,
                                 int afsr_status_bit,
                                 exception_type_t trap,
                                 int estate_error_enable_bit,
                                 int m_synd_priority,
                                 unsigned m_synd,
                                 int e_synd_priority,
                                 unsigned e_synd,
                                 int afar_priority,
                                 uint64 afar,
                                 int set_priv,
                                 int set_me);

typedef struct sparc_u3_interface {
        sparc_u3_error_t cause_error;
} sparc_u3_interface_t;

#define SPARC_U3_INTERFACE "sparc-u3"

VIRTUTECH CONFIDENTIAL    Previous - Up - Next