* ========== Copyright Header Begin ==========================================
* OpenSPARC T2 Processor File: queue.h
* Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
* 4150 Network Circle, Santa Clara, California 95054, U.S.A.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* For the avoidance of doubt, and except that if any non-GPL license
* choice is available it will apply instead, Sun elects to use only
* the General Public License version 2 (GPLv2) at this time for any
* software where a choice of GPL license versions is made
* available with the language indicating that GPLv2 or any later version
* may be used, or where a choice of which version of the GPL is applied is
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* ========== Copyright Header End ============================================
#define LLONG_BIGNUM (MAXLONG|(MAXLONG <<12))
// Main Record node for Exp/Act value checking
typedef struct t_check_item
{
unsigned long long time
; // Time stamp
char type
; // register Type
int reg_num
; // register Number
int level
; // global level Number
int win
; // window Number
unsigned long long value
; // 64 bit value
typedef struct t_instr_item
{
unsigned long long va
; // Virtual Address
unsigned long long pa
; // Physical Address
int num
; // Sequential number
char *instruction
; // Instruction String
// Queue pointers defined here ..
// The record is a void pointer to not tie the functions to
typedef struct t_list_node
{
struct t_list_node
*next
;
// Head node for thread wise list.
typedef struct t_list_head_node
{
t_list_node_ptr head_ptr
, tail_ptr
;
// Main List Node - contains array of lists
t_list_head_ptr t_list
[NUMCORE
*NUMTHREAD
];
// Statics visible in all source files ..
mt_list_ptr
init_q (mt_list_ptr q
) ;
int push_q (mt_list_ptr q
, int tid
, void *item
) ;
void * pop_q (mt_list_ptr q
, int tid
) ;
int print_q (mt_list_ptr q
, int tid
) ;
int size_q (mt_list_ptr q
, int tid
) ;
unsigned long long status_q (mt_list_ptr q
) ;
int oldest_t(mt_list_ptr q
);
t_instr_item_ptr
scan_instr4va (mt_list_ptr q
, int tid
, unsigned long long va
);