global userspace_init extern _binary_usrbin_bin_start extern _binary_usrbin_bin_size userspace_init: push ebp mov ebp, esp push esi push edi mov ecx, _binary_usrbin_bin_size mov esi, _binary_usrbin_bin_start mov edi, 0x100000 .loop: movsb dec ecx jz .end jmp .loop .end: pop edi pop esi call usrcall pop ebp ret usrcall: push ebp mov ebp, esp cli mov ax, 0x23 mov ds, ax mov es, ax mov fs, ax mov gs, ax mov eax, esp push dword 0x23 push eax pushf push dword 0x1B push dword 0x00100000 iret pop ebp ret