diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2008-06-10 06:13:22 +0400 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2008-06-10 06:13:22 +0400 |
commit | a0496b5e4f665e627005ed4fbc721f9dc52396b0 (patch) | |
tree | 224163f6b14f09227a89e2e55cb33df14d08b4a4 /newlib/libc/machine/spu/include/spu_timer.h | |
parent | 27a07c4596d35cbe4b5bca2990e8ed371644d966 (diff) |
2008-06-09 Ken Werner <ken.werner@de.ibm.com>
* libc/machine/spu/Makefile.am: Add new files.
* libc/machine/spu/Makefile.in: Likewise.
* libc/machine/spu/include/spu_timer.h: New file to add timer support
using interrupts.
* libc/machine/spu/spu_clock_stop.c: Likewise.
* libc/machine/spu/spu_clock_svcs.c: Likewise.
* libc/machine/spu/spu_timer_flih.S: Likewise.
* libc/machine/spu/spu_timer_free.c: Likewise.
* libc/machine/spu/spu_timer_internal.h: Likewise.
* libc/machine/spu/spu_timer_slih.c: Likewise.
* libc/machine/spu/spu_timer_slih_reg.c: Likewise.
* libc/machine/spu/spu_timer_stop.c: Likewise.
* libc/machine/spu/spu_timer_svcs.c: Likewise.
Diffstat (limited to 'newlib/libc/machine/spu/include/spu_timer.h')
-rw-r--r-- | newlib/libc/machine/spu/include/spu_timer.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/newlib/libc/machine/spu/include/spu_timer.h b/newlib/libc/machine/spu/include/spu_timer.h new file mode 100644 index 000000000..ea10ce57d --- /dev/null +++ b/newlib/libc/machine/spu/include/spu_timer.h @@ -0,0 +1,84 @@ +/* +(C) Copyright IBM Corp. 2008 + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +* Neither the name of IBM nor the names of its contributors may be +used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef _SPU_TIMER_H_ +#define _SPU_TIMER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> + +/* Clock services. */ +extern void spu_clock_start (void); +extern int spu_clock_stop (void); +extern uint64_t spu_clock_read (void); + +/* Timer services. */ +extern int spu_timer_alloc (int interval, void (*func) (int)); +extern int spu_timer_free (int id); +extern int spu_timer_start (int id); +extern int spu_timer_stop (int id); + +/* Interrupt services. */ +extern void spu_slih_register (unsigned event_mask, + unsigned (*slih) (unsigned)); +extern unsigned spu_clock_slih (unsigned event_mask); + +/* Number of supported timers. */ +#define SPU_TIMER_NTIMERS 4 + +/* Recommended minimun spu timer interval time from (cat /proc/cpuinfo) + * QS20 100/14318000 = 6.98 usec + * QS21/QS22 100/26666666 = 3.75 usec + * PS3 100/79800000 = 1.25 usec */ +#define SPU_TIMER_MIN_INTERVAL 100 + +/* Clock error codes. */ +#define SPU_CLOCK_ERR_NOT_RUNNING -2 +#define SPU_CLOCK_ERR_STILL_RUNNING -3 +#define SPU_CLOCK_ERR_TIMERS_ACTIVE -4 + +/* Timer error codes. */ +#define SPU_TIMER_ERR_INVALID_PARM -10 +#define SPU_TIMER_ERR_NONE_FREE -11 +#define SPU_TIMER_ERR_INVALID_ID -12 +#define SPU_TIMER_ERR_ACTIVE -13 +#define SPU_TIMER_ERR_NOT_ACTIVE -14 +#define SPU_TIMER_ERR_NOCLOCK -15 +#define SPU_TIMER_ERR_FREE -16 +#define SPU_TIMER_ERR_NOT_STOPPED -17 + +#ifdef __cplusplus +} +#endif + +#endif |