Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .global _apStart
- .global _apEnd
- .global _ap32
- .global _gdt
- .global _patchJmp
- .global _patchGdt
- .global _patchStack
- .global _patchMain
- .section .text
- .code16
- _apStart:
- cli
- mov %cs, %ax
- mov %ax, %ds
- lgdt (_gdtPtr - _apStart)
- mov %cr0, %eax
- or $1, %eax
- mov %eax, %cr0
- .byte 0x66
- .byte 0xEA
- _patchJmp:
- .long 0x00000000
- .word 0x0008
- .code32
- _ap32:
- mov $0x10, %ax
- mov %ax, %ds
- mov %ax, %es
- mov %ax, %fs
- mov %ax, %gs
- mov %ax, %ss
- // stack pointer via immediate value setzen
- .byte 0xBC
- _patchStack:
- .long 0x00000000
- // c funktions adresse in eax laden
- .byte 0xB8
- _patchMain:
- .long 0x00000000
- // lauf Forest! call in den c code
- call *%eax
- apLoop:
- cli
- hlt
- jmp apLoop
- .align 4
- _gdtPtr:
- .word 23
- _patchGdt:
- .long 0x00000000
- .align 8
- _gdt:
- .quad 0x0000000000000000
- .quad 0x00CF9A000000FFFF
- .quad 0x00CF92000000FFFF
- _gdtEnd:
- _apEnd:
Advertisement