loadwarka/src/x86_stage2.S

65 lines
1.4 KiB
ArmAsm
Raw Normal View History

2022-01-26 21:52:30 +00:00
/*
2022-01-26 22:43:18 +00:00
Copyright (c) 2008-2009 Micah Elizabeth Scott
2022-01-26 21:52:30 +00:00
Copyright (c) 2022 Alex Kotov <kotovalexarian@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
2022-01-26 20:19:39 +00:00
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
2022-01-26 22:43:18 +00:00
2022-01-26 23:03:47 +00:00
#include "x86_common.h"
2022-01-26 22:43:18 +00:00
2022-01-26 20:19:39 +00:00
.code16
.global _start
.section .text
2022-01-26 23:16:14 +00:00
_start:
ljmp $0, $STAGE2_ADDR(main)
2022-01-26 22:43:18 +00:00
2022-01-27 00:30:53 +00:00
.align 2
2022-01-27 00:21:22 +00:00
size: .word _end - _start
2022-01-27 00:29:34 +00:00
hello: .string "Hello from stage 2!\r\n"
2022-01-26 22:43:18 +00:00
2022-01-26 23:03:47 +00:00
main:
mov $STAGE2_ADDR(hello), %si
2022-01-26 22:43:18 +00:00
call print_str
2022-01-26 20:19:39 +00:00
hang:
2022-01-26 20:19:39 +00:00
cli
hlt
jmp hang
2022-01-26 22:43:18 +00:00
do_ret:
ret
2022-01-27 00:26:54 +00:00
// AL - char
2022-01-26 22:43:18 +00:00
print_char:
mov $0x0E, %ah
mov $0x0001, %bx
int $0x10
2022-01-27 00:36:10 +00:00
ret
2022-01-26 22:43:18 +00:00
2022-01-27 00:26:54 +00:00
// SI - string pointer
2022-01-26 22:43:18 +00:00
print_str:
lodsb
test %al, %al
jz do_ret
call print_char
jmp print_str
2022-01-27 00:21:22 +00:00
_end: