unsigned long C_SWI_HANDLER(unsigned swi_num, void* regs) { unsigned long result = 0; /*Decide which swi to run based on swi number */ switch(swi_num) { case EXIT_SWI: /* call swi_exit */ result = swi_exit(*(int*)regs); break; case READ_SWI: /* call swi_read */ result = swi_read(regs); break; case WRITE_SWI: /* call swi_write */ result = swi_write(regs); break; case TIME_SWI: /* call swi_time */ result = swi_time(); break; case SLEEP_SWI: /*call swi_sleep */ swi_sleep(regs); break; default: /* return with status bad code */ swi_exit(BADCODE); } return result; }
int main() { int i; //reset the processor reset_proc(); //load the program memory load_program_memory(); print(); //$$$$$$$$$$$$$$ set pc=0X0 R[15]=0; ex_flag=0; //run the simulator run_armsim(); printreg(); // $$$$$$$$$$$ printing the memory array MEM[w+1]=R[7]+48; // printf("\n\n%d",R[7]); printf("\n\nPrinting the elements of MEM array\n\n"); for(i=0;i<w+2;i++) printf("%d ",MEM[i]-48); printf("\n"); swi_exit(); return 0; }