void Mrf49xaInit(Mrf49xaMac_t* inst) { uint8_t k; #ifdef PIC16_HW uint8_t i, j; #endif reset: for (k = 0; k < sizeof(Mrf49xaMac_t); k++) { ((uint8_t*)mrf49Inst)[k] = 0; } // Power chip, reset it. RF_SPI_CS = 1; RF_SPI_SCK = 0; RF_SPI_SDO = 0; RF_POWER = RF_PWR_ON; RF_FSEL = 1; #ifdef PIC16_HW RF_INT = 1; #endif Delay50Ms(); RF_RES = 0; Delay50Ms(); RF_RES = 1; Delay50Ms(); mrf49Inst->state = RECV_IDLE; SetupRegisters(Init); //mrf49xaCfg(mrfRegset_Init, mrfRegset_InitCnt); Mrf49xaModeRx(mrf49Inst); k = 0; while(RF_IRQ == 0) { k++; if (k == 255) { k = 0; // Overflow, reset.. goto reset; } #ifdef PIC24_HW Mrf49xaServe(0); #else Mrf49xaServe(mrf49Inst); #endif } }
void StartEmulationFromSave ( usf_state_t * state, void * savestate ) { uint32_t count = 0; //printf("Starting generic Cpu\n"); //CloseCpu(); memset(state->N64MEM, 0, state->RdramSize); memset(state->DMEM, 0, 0x1000); memset(state->IMEM, 0, 0x1000); memset(state->TLB_Map, 0, 0x100000 * sizeof(uintptr_t) + 0x10000); memset(state->CPU_Action,0,sizeof(*state->CPU_Action)); state->WrittenToRom = 0; InitilizeTLB(state); SetupRegisters(state, state->Registers); BuildInterpreter(state); state->Timers->CurrentTimerType = -1; state->Timers->Timer = 0; for (count = 0; count < MaxTimers; count ++) { state->Timers->Active[count] = 0; } ChangeTimer(state,ViTimer,5000); ChangeCompareTimer(state); state->ViFieldNumber = 0; state->CPURunning = 1; *state->WaitMode = 0; init_rsp(state); Machine_LoadStateFromRAM(state, savestate); state->SampleRate = 48681812 / (AI_DACRATE_REG + 1); if(state->enableFIFOfull) { const float VSyncTiming = 789000.0f; double BytesPerSecond = 48681812.0 / (AI_DACRATE_REG + 1) * 4; double CountsPerSecond = (double)(((double)VSyncTiming) * (double)60.0); double CountsPerByte = (double)CountsPerSecond / (double)BytesPerSecond; uint32_t IntScheduled = (uint32_t)((double)AI_LEN_REG * CountsPerByte); ChangeTimer(state,AiTimer,IntScheduled); AI_STATUS_REG|=0x40000000; } state->OLD_VI_V_SYNC_REG = ~VI_V_SYNC_REG; CPUHLE_Scan(state); }
/** * The compiler's main entry point. * The compiler handles C files one by one. */ int main(int argc, char *argv[]) { int i; CurrentHeap = &ProgramHeap; argc--; argv++; i = ParseCommandLine(argc, argv); SetupRegisters(); SetupLexer(); SetupTypeSystem(); for (; i < argc; ++i) { Compile(argv[i]); } return (ErrorCount != 0); }
void Compiler::TranslationUnit() { // 始初化寄存器 SetupRegisters(); //开始 BeginProgram(); //全局变量部分 Data_Segment(); EmitGlobals(); //代码函部分 Text_Segment(); EmitFunctions(); //结束, 刷新缓冲区 EndProgram(); fclose(ASMFile); }