Team Ai
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes847downloads
BootRAM.txt62 linesDownload Raw Back to Boot
1 2#help_index "Call"3asm {4_HI_CALL::5        PUSH    RBP6        MOV     RBP,RSP7        MOV     RAX,U64 16[RBP]8        TEST    RAX,RAX9        JZ      @@0510        CALL    RAX11@@05:   POP     RBP12        RET1    813//************************************14_HI_MEMCPY::15        PUSH    RBP16        MOV     RBP,RSP17        PUSH    RSI18        PUSH    RDI19        CLD20        MOV     RDI,U64 SF_ARG1[RBP]21        MOV     RSI,U64 SF_ARG2[RBP]22        MOV     RCX,U64 SF_ARG3[RBP]23        REP_MOVSB24        MOV     RAX,RDI25        POP     RDI26        POP     RSI27        POP     RBP28        RET1    2429}30_extern _HI_CALL I64 HiCall(U8 *machine_code);31_extern _HI_MEMCPY U8 *HiMemCpy(U8 *dst,U8 *src,I64 cnt);32 33#help_index "Boot"34public U0 BootRAM(U8 *filename=NULL)35{//Softboot Kernel.BIN file. No hardware reset.36  I64 size;37  CKernel *hi_image,*lo_image=mem_boot_base-sizeof(CBinFile),38        reg *sys_ram_reboot;39  if (!filename)40    filename="::/" KERNEL_BIN_C;41  do if (!(hi_image=FileRead(filename,&size))) return;42  while (hi_image<0x100000); //If alloc from low 640K, just get another copy.43 44  do sys_ram_reboot=MAlloc(SYS_RAM_REBOOT_END-SYS_RAM_REBOOT,Fs->code_heap);45  while (sys_ram_reboot<0x100000);46 47  hi_image->boot_src=BOOT_SRC_RAM;48  hi_image->boot_blk=0;49  hi_image->boot_patch_table_base=lo_image(U8 *)+hi_image->h.patch_table_offset;50  hi_image->sys_run_level =lo_image->sys_run_level&(RLF_VGA|RLF_16BIT);51  MemCpy(&hi_image->start,&lo_image->start,52        sizeof(CKernel)-offset(CKernel.start));53 54  CLI55  if (mp_cnt>1)56    MPHalt;57 58  HiMemCpy(sys_ram_reboot,SYS_RAM_REBOOT,SYS_RAM_REBOOT_END-SYS_RAM_REBOOT);59  HiMemCpy(lo_image,hi_image,size);60  HiCall(sys_ram_reboot);61}62