mips.c
上传用户:wstnjxml
上传日期:2014-04-03
资源大小:7248k
文件大小:2k
源码类别:

Windows CE

开发平台:

C/C++

  1. /*****************************************************************************
  2.  *
  3.  * This program is free software ; you can redistribute it and/or modify
  4.  * it under the terms of the GNU General Public License as published by
  5.  * the Free Software Foundation; either version 2 of the License, or
  6.  * (at your option) any later version.
  7.  *
  8.  * This program is distributed in the hope that it will be useful,
  9.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11.  * GNU General Public License for more details.
  12.  *
  13.  * You should have received a copy of the GNU General Public License
  14.  * along with this program; if not, write to the Free Software
  15.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  16.  *
  17.  * $Id: mips.c 271 2005-08-09 08:31:35Z picard $
  18.  *
  19.  * The Core Pocket Media Player
  20.  * Copyright (c) 2004-2005 Gabor Kovacs
  21.  *
  22.  ****************************************************************************/
  23. #include "../common.h"
  24. #if defined(MIPS)
  25. void STDCALL GetCpuId(int Id,uint32_t* p)
  26. {
  27. __asm( ".set noreorder;"
  28. "mfc0 $2, $15;" //prid
  29. "nop;"
  30. "nop;"
  31. "nop;"
  32. "nop;"
  33. "sw $2,0($4);"
  34. ".set reorder;", p);
  35. }
  36. #define SPEED10
  37. __asm(
  38. "addi $2,$2,1;"
  39. "addi $2,$2,1;"
  40. "addi $2,$2,1;"
  41. "addi $2,$2,1;"
  42. "addi $2,$2,1;"
  43. "addi $2,$2,1;"
  44. "addi $2,$2,1;"
  45. "addi $2,$2,1;"
  46. "addi $2,$2,1;"
  47. "addi $2,$2,1;"
  48. );
  49. int64_t STDCALL CPUSpeedClk(int n)
  50. {
  51. __asm( "add $3,$4,zero;"
  52. "loopn:");
  53. SPEED10
  54. SPEED10
  55. SPEED10
  56. SPEED10
  57. SPEED10
  58. SPEED10
  59. SPEED10
  60. SPEED10
  61. SPEED10
  62. SPEED10
  63. __asm( "addiu   $3,$3,-1;"
  64. "bne $3,zero,loopn;");
  65. return n*(3+100)+500;
  66. }
  67. #endif