CoolFace
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes838downloads
KStart64.txt102 linesDownload Raw Back to Kernel
1 2asm {3USE644        BTS     U32 [SYS_RUN_LEVEL],RLf_64BIT5 6        FNINIT7        MOV     RAX,SYS_FIXED_AREA+CSysFixedArea.init_fpu_mmx8        FXSAVE  U64 [RAX]9 10//Init CPU0 Struct11        PUSH    SYS_FIXED_AREA+CSysFixedArea.adam12        PUSH    SYS_FIXED_AREA+CSysFixedArea.boot_cpu13        PUSH    014        CALL    &CPUStructInit15        CALL    SET_GS_BASE16 17//Init Adam HeapCtrl18        MOV     EDI,U32 SYS_FIXED_AREA+CSysFixedArea.adam_hc19        MOV     EAX,U32 SYS_FIXED_AREA+CSysFixedArea.sys_code_bp20        MOV     U64 CHeapCtrl.bp[RDI],RAX21        MOV     U32 CHeapCtrl.hc_signature[RDI],HEAP_CTRL_SIGNATURE_VAL22 23        LEA     RAX,U64 CHeapCtrl.next_um-CMemUsed.next[RDI]24        MOV     U64 CHeapCtrl.next_um[RDI],RAX25        MOV     U64 CHeapCtrl.last_um[RDI],RAX26 27        MOV     EAX,U32 SYS_FIXED_AREA+CSysFixedArea.adam28        MOV     U64 CHeapCtrl.mem_task[RDI],RAX29        MOV     U64 CTask.code_heap[RAX],RDI30        MOV     U64 CTask.data_heap[RAX],RDI31        MOV     U32 CTask.task_signature[RAX],TASK_SIGNATURE_VAL32 33        BTS     U32 [SYS_RUN_LEVEL],RLf_16MEG_ADAM_HEAP_CTRL34 35        PUSH    MEM_ADAM_STK36        PUSH    U32 SYS_FIXED_AREA+CSysFixedArea.adam37        CALL    &TaskInit38        CALL    SET_FS_BASE39        MOV     RSP,U64 CTask.rsp[RAX]40 41        JMP     I32 &KMain42 43//************************************44USE3245SYS_ENTER_LONG_MODE:: //Switch to long 64-bit mode46        MOV_EAX_CR447        OR      EAX,0xB048        MOV_CR4_EAX49 50        MOV     EAX,[MEM_PML4]51        MOV_CR3_EAX52 53        MOV     ECX,IA32_EFER54        XOR     EDX,EDX55        MOV     EAX,IA32F_LME56        WRMSR57 58        MOV_EAX_CR059        BTS     EAX,31  //Enable paging (required for 64-bit mode)60        MOV_CR0_EAX61 62        DU8     0xEA;      //JMP CGDT.cs64:@@0563        DU32    @@05;64        DU16    CGDT.cs64;65USE6466@@05:   MOV     AX,CGDT.ds67        MOV     DS,AX68        MOV     ES,AX69        MOV     SS,AX70        MOV     FS,AX71        MOV     GS,AX72        RET73 74//************************************75SYS_RAM_REBOOT:: //This gets copied high.  SYS_RAM_REBOOT76        PUSH    U32 CGDT.ds             //stk seg77        PUSH    U32 BOOT_RAM_LIMIT      //stk78        PUSH    U32 0                   //flags79        PUSH    U32 CGDT.cs3280        LEA     RAX,[@@10]81        PUSH    RAX82        IRET83USE3284@@10:   WBINVD85 86//Disable paging87        MOV_EAX_CR088        BTR     EAX,3189        MOV_CR0_EAX90 91        MOV     ECX,IA32_EFER92        XOR     EDX,EDX93        XOR     EAX,EAX94        WRMSR95 96        MOV     EBX,BOOT_SRC_RAM97        MOV     EAX,I32 CORE0_32BIT_INIT98        JMP     EAX99SYS_RAM_REBOOT_END::100USE64101}102