Annotation of OpenXM_contrib/gmp/tune/alpha.asm, Revision 1.1.1.2
1.1 maekawa 1: dnl Alpha time stamp counter access routine.
2:
1.1.1.2 ! ohara 3: dnl Copyright 2000 Free Software Foundation, Inc.
1.1 maekawa 4: dnl
5: dnl This file is part of the GNU MP Library.
6: dnl
7: dnl The GNU MP Library is free software; you can redistribute it and/or
8: dnl modify it under the terms of the GNU Lesser General Public License as
9: dnl published by the Free Software Foundation; either version 2.1 of the
10: dnl License, or (at your option) any later version.
11: dnl
12: dnl The GNU MP Library is distributed in the hope that it will be useful,
13: dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
14: dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15: dnl Lesser General Public License for more details.
16: dnl
17: dnl You should have received a copy of the GNU Lesser General Public
18: dnl License along with the GNU MP Library; see the file COPYING.LIB. If
19: dnl not, write to the Free Software Foundation, Inc., 59 Temple Place -
20: dnl Suite 330, Boston, MA 02111-1307, USA.
21:
22: include(`../config.m4')
23:
24:
25: C void speed_cyclecounter (unsigned int p[2]);
26: C
1.1.1.2 ! ohara 27:
! 28: C The rpcc instruction returns a 64-bit value split into two 32-bit fields.
! 29: C The lower 32 bits are set by the hardware, and the upper 32 bits are set
! 30: C by the operating system. The real per-process cycle count is the sum of
! 31: C these halves.
! 32:
! 33: C Unfortunately, some operating systems don't get this right. NetBSD 1.3 is
! 34: C known to sometimes put garbage in the upper half. Whether newer NetBSD
! 35: C versions get it right, is unknown to us.
! 36:
1.1 maekawa 37: C rpcc measures cycles elapsed in the user program and hence should be very
38: C accurate even on a busy system. Losing cache contents due to task
39: C switching may have an effect though.
40:
41: ASM_START()
42: PROLOGUE(speed_cyclecounter)
43: rpcc r0
1.1.1.2 ! ohara 44: srl r0,32,r1
! 45: addq r1,r0,r0
1.1 maekawa 46: stl r0,0(r16)
1.1.1.2 ! ohara 47: stl r31,4(r16) C zero upper return word
1.1 maekawa 48: ret r31,(r26),1
49: EPILOGUE(speed_cyclecounter)
50: ASM_END()
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>