From: notaz Date: Mon, 19 Nov 2012 01:08:06 +0000 (+0200) Subject: frontend: pcnt: support arm11 X-Git-Tag: r17~12 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=commitdiff_plain;h=603efa29ac7176c5dc27cab52007d4c9f61c3069;hp=6949dd2a369531ccf38c3f4fae7f6fcf3be6dcc6 frontend: pcnt: support arm11 --- diff --git a/frontend/pcnt.h b/frontend/pcnt.h index 545f0c43..9ddd5003 100644 --- a/frontend/pcnt.h +++ b/frontend/pcnt.h @@ -11,11 +11,11 @@ enum pcounters { #ifdef PCNT -#ifndef __ARM_ARCH_7A__ +#if defined(__ARM_ARCH_7A__) || defined(ARM1176) +#define PCNT_DIV 1000 +#else #include #define PCNT_DIV 1 -#else -#define PCNT_DIV 1000 #endif static const char *pcnt_names[PCNT_CNT] = { "", "gpu", "spu", "blit", "gte", "test" }; @@ -85,6 +85,9 @@ static inline unsigned int pcnt_get(void) #ifdef __ARM_ARCH_7A__ __asm__ volatile("mrc p15, 0, %0, c9, c13, 0" : "=r"(val)); +#elif defined(ARM1176) + __asm__ volatile("mrc p15, 0, %0, c15, c12, 1" + : "=r"(val)); #else // all slow on ARM :( //struct timespec tv; @@ -107,6 +110,12 @@ static inline void pcnt_init(void) asm volatile("mcr p15, 0, %0, c9, c12, 0" :: "r"(v)); // enable cycle counter asm volatile("mcr p15, 0, %0, c9, c12, 1" :: "r"(1<<31)); +#elif defined(ARM1176) + int v; + asm volatile("mrc p15, 0, %0, c15, c12, 0" : "=r"(v)); + v |= 5; // master enable, ccnt reset + v &= ~8; // ccnt divider 0 + asm volatile("mcr p15, 0, %0, c15, c12, 0" :: "r"(v)); #endif }