* ========== Copyright Header Begin ==========================================
* OpenSPARC T2 Processor File: breakpoint.h
* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
* The above named program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License version 2 as published by the Free Software Foundation.
* The above named 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 work; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
* ========== Copyright Header End ============================================
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
#pragma ident "@(#)breakpoint.h 1.7 07/05/30 SMI"
#define BREAK_HASH_BITS 4
#define BREAK_HASH_SIZE (1<<BREAK_HASH_BITS)
#define BREAK_HASH_MASK (BREAK_HASH_SIZE-1)
breakpoint_t
*hash
[BREAK_HASH_SIZE
];
breakpoint_t
*free_listp
;
breakpoint_t
*active_listp
;
breakpoint_t
*disabled_listp
;
breakpoint_t
*free_nextp
;
breakpoint_t
*active_nextp
;
breakpoint_t
*disabled_nextp
;
breakpoint_t
*hash_nextp
;
* for the moment use a global to indicate system wide
* breakpoints ... will go away when we define multiple
} breakpoint_check_code_t
;
* FIXME: eventually blaze will understand different
* MMU translation contexts - ultimately this will
* morph into thread ids .... so we can properly
#define DEFAULT_BP_CONTEXT 0
* FIXME - need to decide if breakpoints are global
* or isolated to certian cpus, or both ?
extern bp_info_t
*system_breakpointsp
;
/* Internal breakpoint manipulation interface */
extern bp_info_t
*breakpoint_init();
extern breakpoint_t
*breakpoint_insert(bp_info_t
*bip
, tvaddr_t pc
,
extern void breakpoint_insert_next(bp_info_t
*bip
);
extern void breakpoint_clear_next(bp_info_t
*bip
);
extern int breakpoint_delete_by_id(bp_info_t
*bip
, int id
);
extern breakpoint_t
*breakpoint_find_by_addr(bp_info_t
*bip
, uint64_t addr
,
extern int breakpoint_delete_by_addr(bp_info_t
*bip
, uint64_t addr
,
extern int breakpoint_disable_by_id(bp_info_t
*bip
, int id
);
extern int breakpoint_enable_by_id(bp_info_t
*bip
, int id
);
extern bool_t
breakpoint_any_reached(void);
/* Blaze UI calls for breakpoint stuff */
extern bool_t
breakpoint_parse_command(bp_info_t
*bip
, char *args
,
char *stage_name
/* default: NULL */);
extern void breakpoint_print(bp_info_t
*);
extern bool_t
breakpoint_dump(bp_info_t
*, FILE *);
extern bool_t
breakpoint_restore(bp_info_t
*, FILE *);
extern breakpoint_check_code_t
breakpoint_check(bp_info_t
*bip
, uint64_t pc
,
int context
, breakpoint_t
**bpp
);
#endif /* !_BREAKPOINT_H_ */