Boolean ramInit(ArmRam* ram, ArmMem* mem, UInt32 adr, UInt32 sz, UInt32* buf){ ram->adr = adr; ram->sz = sz; ram->buf = buf; return memRegionAdd(mem, adr, sz, &ramAccessF, ram); }
Boolean pxa255pwrClkInit(Pxa255pwrClk* pc, ArmCpu* cpu, ArmMem* physMem){ Boolean ok = true; __mem_zero(pc, sizeof(Pxa255pwrClk)); pc->cpu = cpu; pc->CCCR = 0x00000122UL; //set CCCR to almost default value (we use mult 32 not 27) pc->CKEN = 0x000179EFUL; //set CKEN to default value pc->OSCR = 0x00000003UL; //32KHz oscillator on and stable pc->pwrRegs[1] = 0x20; //set PSSR pc->pwrRegs[3] = 3; //set PWER pc->pwrRegs[4] = 3; //set PRER pc->pwrRegs[5] = 3; //set PFER pc->pwrRegs[12] = 1; //set RCSR ok = ok && memRegionAdd(physMem, PXA255_CLOCK_MANAGER_BASE, PXA255_CLOCK_MANAGER_SIZE, pxa255pwrClkPrvClockMgrMemAccessF, pc); ok = ok && memRegionAdd(physMem, PXA255_POWER_MANAGER_BASE, PXA255_POWER_MANAGER_SIZE, pxa255pwrClkPrvPowerMgrMemAccessF, pc); return ok; }