Автор: quasist Вторник, 03 августа 2010, 17:57
Взято и укорочено из эмуля GBA.
Спасибо Orkie и Exophase
CODE
#ifdef GP2X
#include <sys/mman.h>
#include <fcntl.h>
unsigned long gp2x_dev=0;
static volatile unsigned long *xx_mem;
void WizCpuSpeed(unsigned short c_spd)
{
gp2x_dev=open("/dev/mem",O_RDWR);
xx_mem=(unsigned long*)mmap(0,0x10000,PROT_READ|PROT_WRITE,MAP_SHARED,gp2x_dev, 0xc0000000);
unsigned long v;
unsigned long mdiv, pdiv, sdiv = 0;
#define SYS_CLK_FREQ 27
pdiv=9;
mdiv=(c_spd * pdiv)/27;
mdiv&=0x3ff;
v=(pdiv<<18)|(mdiv<<8)|sdiv;
xx_mem[0xf004>>2]=v;
xx_mem[0xf07c>>2]|=0x8000;
while (xx_mem[0xf07c>>2]&0x8000);
close(gp2x_dev);
}
#endif
Автор: PiroTeX Вторник, 03 августа 2010, 19:35
Можно небольшое пояснениие к коду?
Автор: quasist Вторник, 03 августа 2010, 20:08
QUOTE (PiroTeX @ Вторник, 03 августа 2010, 20:35)
Можно небольшое пояснениие к коду?
Число мегагерц переводится в специальный формат и пишется в память виза по определённому адресу. Существуют полуоффициальные спертые доки по материнке виза, откуда линукс хацкеры и брали инфу.