182900Sjake/*- 282900Sjake * Copyright (c) 1996 Berkeley Software Design, Inc. All rights reserved. 382900Sjake * 482900Sjake * Redistribution and use in source and binary forms, with or without 582900Sjake * modification, are permitted provided that the following conditions 682900Sjake * are met: 782900Sjake * 1. Redistributions of source code must retain the above copyright 882900Sjake * notice, this list of conditions and the following disclaimer. 982900Sjake * 2. Redistributions in binary form must reproduce the above copyright 1082900Sjake * notice, this list of conditions and the following disclaimer in the 1182900Sjake * documentation and/or other materials provided with the distribution. 1282900Sjake * 3. Berkeley Software Design Inc's name may not be used to endorse or 1382900Sjake * promote products derived from this software without specific prior 1482900Sjake * written permission. 1582900Sjake * 1682900Sjake * THIS SOFTWARE IS PROVIDED BY BERKELEY SOFTWARE DESIGN INC ``AS IS'' AND 1782900Sjake * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1882900Sjake * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1982900Sjake * ARE DISCLAIMED. IN NO EVENT SHALL BERKELEY SOFTWARE DESIGN INC BE LIABLE 2082900Sjake * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2182900Sjake * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2282900Sjake * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2382900Sjake * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2482900Sjake * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2582900Sjake * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2682900Sjake * SUCH DAMAGE. 2782900Sjake * 2882900Sjake * from BSDI $Id: ktr.h,v 1.10.2.7 2000/03/16 21:44:42 cp Exp $ 2982900Sjake * $FreeBSD$ 3082900Sjake */ 3182900Sjake 3282900Sjake#ifndef _MACHINE_KTR_H_ 3382900Sjake#define _MACHINE_KTR_H_ 3482900Sjake 35153175Smarius#include <sys/ktr.h> 36153175Smarius 3793949Sjake#ifndef LOCORE 3882900Sjake 39203838Smarius#define KTR_CPU PCPU_GET(mid) 4093949Sjake 4193949Sjake#else 4293949Sjake 4382900Sjake/* 4493949Sjake * XXX could really use another register... 4582900Sjake */ 4682900Sjake#define ATR(desc, r1, r2, r3, l1, l2) \ 4782900Sjake .sect .rodata ; \ 48114071Sobrienl1: .asciz desc ; \ 4982900Sjake .previous ; \ 5093949Sjake SET(ktr_idx, r2, r1) ; \ 5182900Sjake lduw [r1], r2 ; \ 52114071Sobrienl2: add r2, 1, r3 ; \ 5384177Sjake set KTR_ENTRIES - 1, r1 ; \ 5484177Sjake and r3, r1, r3 ; \ 5584177Sjake set ktr_idx, r1 ; \ 5682900Sjake casa [r1] ASI_N, r2, r3 ; \ 5782900Sjake cmp r2, r3 ; \ 5882900Sjake bne %icc, l2 ## b ; \ 5982900Sjake mov r3, r2 ; \ 6093949Sjake SET(ktr_buf, r3, r1) ; \ 6182900Sjake mulx r2, KTR_SIZEOF, r2 ; \ 6282900Sjake add r1, r2, r1 ; \ 6393949Sjake rd %tick, r2 ; \ 6493949Sjake stx r2, [r1 + KTR_TIMESTAMP] ; \ 65203838Smarius lduw [PCPU(MID)], r2 ; \ 6693949Sjake stw r2, [r1 + KTR_CPU] ; \ 6793949Sjake stw %g0, [r1 + KTR_LINE] ; \ 6893949Sjake stx %g0, [r1 + KTR_FILE] ; \ 6993949Sjake SET(l1 ## b, r3, r2) ; \ 7082900Sjake stx r2, [r1 + KTR_DESC] 7182900Sjake 72222828Smarius/* 73222828Smarius * NB: this clobbers %y. 74222828Smarius */ 7582900Sjake#define CATR(mask, desc, r1, r2, r3, l1, l2, l3) \ 7693949Sjake set mask, r1 ; \ 77222828Smarius SET(ktr_mask, r3, r2) ; \ 78222828Smarius lduw [r2], r2 ; \ 79222828Smarius and r2, r1, r1 ; \ 80222828Smarius brz r1, l3 ## f ; \ 81222828Smarius nop ; \ 82222828Smarius lduw [PCPU(CPUID)], r2 ; \ 83222828Smarius mov _NCPUBITS, r3 ; \ 84222828Smarius mov %g0, %y ; \ 85222828Smarius udiv r2, r3, r2 ; \ 86222828Smarius srl r2, 0, r2 ; \ 87222828Smarius sllx r2, PTR_SHIFT, r2 ; \ 88222828Smarius SET(ktr_cpumask, r3, r1) ; \ 89222828Smarius ldx [r1 + r2], r1 ; \ 90222828Smarius lduw [PCPU(CPUID)], r2 ; \ 91222828Smarius mov _NCPUBITS, r3 ; \ 92222828Smarius mov %g0, %y ; \ 93222828Smarius udiv r2, r3, r2 ; \ 94222828Smarius srl r2, 0, r2 ; \ 95222828Smarius smul r2, r3, r3 ; \ 96222828Smarius lduw [PCPU(CPUID)], r2 ; \ 97222828Smarius sub r2, r3, r3 ; \ 9893949Sjake mov 1, r2 ; \ 99222828Smarius sllx r2, r3, r2 ; \ 100222828Smarius andn r1, r2, r1 ; \ 101222828Smarius brz r1, l3 ## f ; \ 102222828Smarius nop ; \ 10382900Sjake ATR(desc, r1, r2, r3, l1, l2) 10482900Sjake 10582900Sjake#endif /* LOCORE */ 10682900Sjake 10782900Sjake#endif /* !_MACHINE_KTR_H_ */ 108