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 37293853Smarius#ifdef LOCORE 3882900Sjake 3982900Sjake/* 40293853Smarius * XXX could really use another register ... 4182900Sjake */ 4282900Sjake#define ATR(desc, r1, r2, r3, l1, l2) \ 4382900Sjake .sect .rodata ; \ 44114071Sobrienl1: .asciz desc ; \ 4582900Sjake .previous ; \ 4693949Sjake SET(ktr_idx, r2, r1) ; \ 4782900Sjake lduw [r1], r2 ; \ 48114071Sobrienl2: add r2, 1, r3 ; \ 4984177Sjake set KTR_ENTRIES - 1, r1 ; \ 5084177Sjake and r3, r1, r3 ; \ 5184177Sjake set ktr_idx, r1 ; \ 5282900Sjake casa [r1] ASI_N, r2, r3 ; \ 5382900Sjake cmp r2, r3 ; \ 5482900Sjake bne %icc, l2 ## b ; \ 5582900Sjake mov r3, r2 ; \ 5693949Sjake SET(ktr_buf, r3, r1) ; \ 57243046Sjeff ldx [r1], r1 ; \ 5882900Sjake mulx r2, KTR_SIZEOF, r2 ; \ 5982900Sjake add r1, r2, r1 ; \ 6093949Sjake rd %tick, r2 ; \ 6193949Sjake stx r2, [r1 + KTR_TIMESTAMP] ; \ 62293853Smarius lduw [PCPU(CPUID)], r2 ; \ 6393949Sjake stw r2, [r1 + KTR_CPU] ; \ 6493949Sjake stw %g0, [r1 + KTR_LINE] ; \ 6593949Sjake stx %g0, [r1 + KTR_FILE] ; \ 6693949Sjake SET(l1 ## b, r3, r2) ; \ 6782900Sjake stx r2, [r1 + KTR_DESC] 6882900Sjake 6982900Sjake#define CATR(mask, desc, r1, r2, r3, l1, l2, l3) \ 7093949Sjake set mask, r1 ; \ 71222828Smarius SET(ktr_mask, r3, r2) ; \ 72222828Smarius lduw [r2], r2 ; \ 73222828Smarius and r2, r1, r1 ; \ 74222828Smarius brz r1, l3 ## f ; \ 75222828Smarius nop ; \ 76222828Smarius lduw [PCPU(CPUID)], r2 ; \ 77222828Smarius mov _NCPUBITS, r3 ; \ 78293853Smarius udivx r2, r3, r2 ; \ 79222828Smarius srl r2, 0, r2 ; \ 80222828Smarius sllx r2, PTR_SHIFT, r2 ; \ 81222828Smarius SET(ktr_cpumask, r3, r1) ; \ 82222828Smarius ldx [r1 + r2], r1 ; \ 83222828Smarius lduw [PCPU(CPUID)], r2 ; \ 84222828Smarius mov _NCPUBITS, r3 ; \ 85293853Smarius udivx r2, r3, r2 ; \ 86222828Smarius srl r2, 0, r2 ; \ 87222828Smarius smul r2, r3, r3 ; \ 88222828Smarius lduw [PCPU(CPUID)], r2 ; \ 89222828Smarius sub r2, r3, r3 ; \ 9093949Sjake mov 1, r2 ; \ 91222828Smarius sllx r2, r3, r2 ; \ 92222828Smarius andn r1, r2, r1 ; \ 93222828Smarius brz r1, l3 ## f ; \ 94222828Smarius nop ; \ 9582900Sjake ATR(desc, r1, r2, r3, l1, l2) 9682900Sjake 9782900Sjake#endif /* LOCORE */ 9882900Sjake 9982900Sjake#endif /* !_MACHINE_KTR_H_ */ 100