merge with mainline
This commit is contained in:
commit
e5a73c4247
182 changed files with 9977 additions and 5276 deletions
125
grub-core/tests/boot/kbsd.init-i386.S
Normal file
125
grub-core/tests/boot/kbsd.init-i386.S
Normal file
|
@ -0,0 +1,125 @@
|
|||
/*
|
||||
* GRUB -- GRand Unified Bootloader
|
||||
* Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
*
|
||||
* GRUB 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifdef TARGET_NETBSD
|
||||
#define SYSCALL_RESET 208
|
||||
#elif defined (TARGET_OPENBSD)
|
||||
#define SYSCALL_RESET 55
|
||||
#else
|
||||
#error unknown target
|
||||
#endif
|
||||
|
||||
#define MODE_RDRW 2
|
||||
#define FLAGS_NONE 0
|
||||
#define SYSCALL_OPEN 5
|
||||
#define SYSCALL_WRITE 4
|
||||
#define SYSCALL_EXIT 1
|
||||
#define SYSCALL_ARCH 165
|
||||
#define SYSCALL_INT 0x80
|
||||
#define SYSCALL_ARCH_IOPL 2
|
||||
|
||||
#define RESET_NOSYNC 0x4
|
||||
#define RESET_HALT 0x8
|
||||
#define RESET_POWEROFF 0x800
|
||||
|
||||
#define SHUTDOWN_PORT 0x8900
|
||||
|
||||
.section ".init", "ax"
|
||||
.global start,_start
|
||||
start:
|
||||
_start:
|
||||
/* open. */
|
||||
movl $SYSCALL_OPEN, %eax
|
||||
pushl $FLAGS_NONE
|
||||
pushl $MODE_RDRW
|
||||
leal device, %ebx
|
||||
pushl %ebx
|
||||
pushl $0
|
||||
int $SYSCALL_INT
|
||||
addl $16, %esp
|
||||
movl %eax, %ecx
|
||||
|
||||
/* write. */
|
||||
movl $SYSCALL_WRITE, %eax
|
||||
pushl $(messageend-message)
|
||||
leal message, %ebx
|
||||
pushl %ebx
|
||||
pushl %ecx
|
||||
pushl $0
|
||||
int $SYSCALL_INT
|
||||
addl $16, %esp
|
||||
|
||||
/* IOPL. */
|
||||
movl $SYSCALL_ARCH, %eax
|
||||
pushl $iopl_arg
|
||||
pushl $SYSCALL_ARCH_IOPL
|
||||
pushl $0
|
||||
int $SYSCALL_INT
|
||||
addl $12, %esp
|
||||
|
||||
movw $SHUTDOWN_PORT, %dx
|
||||
movb $'S', %al
|
||||
outb %al, %dx
|
||||
movb $'h', %al
|
||||
outb %al, %dx
|
||||
movb $'u', %al
|
||||
outb %al, %dx
|
||||
movb $'t', %al
|
||||
outb %al, %dx
|
||||
movb $'d', %al
|
||||
outb %al, %dx
|
||||
movb $'o', %al
|
||||
outb %al, %dx
|
||||
movb $'w', %al
|
||||
outb %al, %dx
|
||||
movb $'n', %al
|
||||
outb %al, %dx
|
||||
|
||||
/* shutdown. */
|
||||
movl $SYSCALL_RESET, %eax
|
||||
pushl $0
|
||||
pushl $(RESET_POWEROFF|RESET_HALT|RESET_NOSYNC)
|
||||
pushl $0
|
||||
int $SYSCALL_INT
|
||||
addl $8, %esp
|
||||
|
||||
/* exit (1). Shouldn't be reached. */
|
||||
movl $SYSCALL_EXIT, %eax
|
||||
pushl $1
|
||||
pushl $0
|
||||
int $SYSCALL_INT
|
||||
.section ".fini", "ax"
|
||||
1: jmp 1b
|
||||
.section ".text", "ax"
|
||||
1: jmp 1b
|
||||
/* This section is needed for NetBSD to identify the binary. */
|
||||
.section ".note.netbsd.ident", "a"
|
||||
.long 0x7
|
||||
.long 0x4
|
||||
.long 0x1
|
||||
.ascii "NetBSD"
|
||||
.byte 0
|
||||
.data
|
||||
device:
|
||||
.ascii "/dev/console"
|
||||
.byte 0
|
||||
message:
|
||||
.ascii "Boot Test Passed Successfully\n" SUCCESSFUL_BOOT_STRING "\n"
|
||||
messageend:
|
||||
iopl_arg:
|
||||
.long 3
|
111
grub-core/tests/boot/kbsd.init-x86_64.S
Normal file
111
grub-core/tests/boot/kbsd.init-x86_64.S
Normal file
|
@ -0,0 +1,111 @@
|
|||
/*
|
||||
* GRUB -- GRand Unified Bootloader
|
||||
* Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
*
|
||||
* GRUB 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define MODE_RDRW 2
|
||||
#define FLAGS_NONE 0
|
||||
#define SYSCALL_OPEN 5
|
||||
#define SYSCALL_WRITE 4
|
||||
#ifdef TARGET_NETBSD
|
||||
#define SYSCALL_RESET 208
|
||||
#elif defined (TARGET_OPENBSD)
|
||||
#define SYSCALL_RESET 55
|
||||
#else
|
||||
#error unknown target
|
||||
#endif
|
||||
#define SYSCALL_EXIT 1
|
||||
#define SYSCALL_ARCH 165
|
||||
#define SYSCALL_INT 0x80
|
||||
#define SYSCALL_ARCH_IOPL 2
|
||||
|
||||
#define RESET_NOSYNC 0x4
|
||||
#define RESET_HALT 0x8
|
||||
#define RESET_POWEROFF 0x800
|
||||
#define SHUTDOWN_PORT 0x8900
|
||||
|
||||
.section ".init", "ax"
|
||||
.global start,_start
|
||||
start:
|
||||
_start:
|
||||
/* open. */
|
||||
movq $SYSCALL_OPEN, %rax
|
||||
leaq device, %rdi
|
||||
movq $MODE_RDRW, %rsi
|
||||
movq $FLAGS_NONE, %rdx
|
||||
syscall
|
||||
movq %rax, %rdi
|
||||
|
||||
/* write. */
|
||||
movq $SYSCALL_WRITE, %rax
|
||||
movq $(messageend-message), %rdx
|
||||
leaq message, %rsi
|
||||
syscall
|
||||
|
||||
/* IOPL. */
|
||||
movq $SYSCALL_ARCH, %rax
|
||||
movq $SYSCALL_ARCH_IOPL, %rdi
|
||||
leaq iopl_arg, %rsi
|
||||
syscall
|
||||
|
||||
movw $SHUTDOWN_PORT, %dx
|
||||
movb $'S', %al
|
||||
outb %al, %dx
|
||||
movb $'h', %al
|
||||
outb %al, %dx
|
||||
movb $'u', %al
|
||||
outb %al, %dx
|
||||
movb $'t', %al
|
||||
outb %al, %dx
|
||||
movb $'d', %al
|
||||
outb %al, %dx
|
||||
movb $'o', %al
|
||||
outb %al, %dx
|
||||
movb $'w', %al
|
||||
outb %al, %dx
|
||||
movb $'n', %al
|
||||
outb %al, %dx
|
||||
|
||||
/* shutdown. */
|
||||
movq $SYSCALL_RESET, %rax
|
||||
movq $(RESET_POWEROFF|RESET_HALT|RESET_NOSYNC), %rdi
|
||||
movq $0, %rsi
|
||||
syscall
|
||||
|
||||
/* exit (1). Shouldn't be reached. */
|
||||
movq $SYSCALL_EXIT, %rax
|
||||
movq $1, %rdi
|
||||
syscall
|
||||
.section ".fini", "ax"
|
||||
1: jmp 1b
|
||||
.section ".text", "ax"
|
||||
1: jmp 1b
|
||||
/* This section is needed for NetBSD to identify the binary. */
|
||||
.section ".note.netbsd.ident", "a"
|
||||
.long 0x7
|
||||
.long 0x4
|
||||
.long 0x1
|
||||
.ascii "NetBSD"
|
||||
.byte 0
|
||||
.data
|
||||
device:
|
||||
.ascii "/dev/console"
|
||||
.byte 0
|
||||
message:
|
||||
.ascii "Boot Test Passed Successfully\n" SUCCESSFUL_BOOT_STRING "\n"
|
||||
messageend:
|
||||
iopl_arg:
|
||||
.long 3
|
3
grub-core/tests/boot/kbsd.spec.txt
Normal file
3
grub-core/tests/boot/kbsd.spec.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
. type=dir
|
||||
dev type=dir
|
||||
console type=char device=0 mode=666 gid=0 uid=0
|
69
grub-core/tests/boot/kernel-8086.S
Normal file
69
grub-core/tests/boot/kernel-8086.S
Normal file
|
@ -0,0 +1,69 @@
|
|||
|
||||
#define SHUTDOWN_PORT 0x8900
|
||||
|
||||
.text
|
||||
.globl _start
|
||||
_start:
|
||||
base:
|
||||
.code16
|
||||
jmp cont
|
||||
|
||||
portmsg:
|
||||
xorw %ax, %ax
|
||||
1:
|
||||
movb 0(%si), %al
|
||||
test %ax, %ax
|
||||
jz 1f
|
||||
outb %al, %dx
|
||||
incw %si
|
||||
jmp 1b
|
||||
1:
|
||||
ret
|
||||
|
||||
serialmsg:
|
||||
1:
|
||||
movb 0(%si), %bl
|
||||
testb %bl, %bl
|
||||
jz 1f
|
||||
movw $0x3fd, %dx
|
||||
2:
|
||||
inb %dx, %al
|
||||
testb $0x20, %al
|
||||
jz 2b
|
||||
|
||||
movw $0x3f8, %dx
|
||||
movb %bl, %al
|
||||
outb %al, %dx
|
||||
incw %si
|
||||
jmp 1b
|
||||
1:
|
||||
ret
|
||||
|
||||
cont:
|
||||
#ifdef TARGET_NTLDR
|
||||
movw $0x2000, %ax
|
||||
#elif defined (TARGET_CHAINLOADER)
|
||||
xorw %ax, %ax
|
||||
#else
|
||||
#error unsupported target
|
||||
#endif
|
||||
movw %ax, %ds
|
||||
lea message, %si
|
||||
call serialmsg
|
||||
lea shutdown, %si
|
||||
movw $SHUTDOWN_PORT, %dx
|
||||
call portmsg
|
||||
|
||||
1:
|
||||
hlt
|
||||
jmp 1b
|
||||
|
||||
shutdown:
|
||||
.ascii "Shutdown"
|
||||
.byte 0
|
||||
message:
|
||||
.ascii "Boot Test Passed Successfully\n" SUCCESSFUL_BOOT_STRING "\n"
|
||||
.byte 0
|
||||
|
||||
. = base + 510
|
||||
.short 0xaa55
|
89
grub-core/tests/boot/kernel-i386.S
Normal file
89
grub-core/tests/boot/kernel-i386.S
Normal file
|
@ -0,0 +1,89 @@
|
|||
#define ASM_FILE 1
|
||||
#ifdef TARGET_MULTIBOOT2
|
||||
#include <multiboot2.h>
|
||||
#elif defined (TARGET_MULTIBOOT)
|
||||
#include <multiboot.h>
|
||||
#endif
|
||||
|
||||
#define SHUTDOWN_PORT 0x8900
|
||||
|
||||
.text
|
||||
/* Align 32 bits boundary. */
|
||||
.align 8
|
||||
|
||||
#ifdef TARGET_MULTIBOOT2
|
||||
/* Multiboot header. */
|
||||
multiboot_header:
|
||||
/* magic */
|
||||
.long MULTIBOOT2_HEADER_MAGIC
|
||||
/* ISA: i386 */
|
||||
.long MULTIBOOT_ARCHITECTURE_I386
|
||||
/* Header length. */
|
||||
.long multiboot_header_end - multiboot_header
|
||||
/* checksum */
|
||||
.long -(MULTIBOOT2_HEADER_MAGIC + MULTIBOOT_ARCHITECTURE_I386 + (multiboot_header_end - multiboot_header))
|
||||
.short MULTIBOOT_HEADER_TAG_END
|
||||
.short 0
|
||||
.long 8
|
||||
multiboot_header_end:
|
||||
#elif defined (TARGET_MULTIBOOT)
|
||||
/* Multiboot header. */
|
||||
multiboot_header:
|
||||
/* magic */
|
||||
.long MULTIBOOT_HEADER_MAGIC
|
||||
/* flags */
|
||||
.long 0
|
||||
/* checksum */
|
||||
.long -MULTIBOOT_HEADER_MAGIC
|
||||
#endif
|
||||
|
||||
.global start
|
||||
portmsg:
|
||||
xorl %eax, %eax
|
||||
1:
|
||||
movb 0(%esi), %al
|
||||
test %eax, %eax
|
||||
jz 1f
|
||||
outb %al, %dx
|
||||
incl %esi
|
||||
jmp 1b
|
||||
1:
|
||||
ret
|
||||
|
||||
serialmsg:
|
||||
1:
|
||||
movb 0(%esi), %bl
|
||||
testb %bl, %bl
|
||||
jz 1f
|
||||
movw $0x3fd, %dx
|
||||
2:
|
||||
inb %dx, %al
|
||||
testb $0x20, %al
|
||||
jz 2b
|
||||
|
||||
movw $0x3f8, %dx
|
||||
movb %bl, %al
|
||||
outb %al, %dx
|
||||
incl %esi
|
||||
jmp 1b
|
||||
1:
|
||||
ret
|
||||
|
||||
.globl _start
|
||||
_start:
|
||||
lea message, %esi
|
||||
call serialmsg
|
||||
lea shutdown, %esi
|
||||
movw $SHUTDOWN_PORT, %dx
|
||||
call portmsg
|
||||
|
||||
1:
|
||||
hlt
|
||||
jmp 1b
|
||||
|
||||
shutdown:
|
||||
.ascii "Shutdown"
|
||||
.byte 0
|
||||
message:
|
||||
.ascii "Boot Test Passed Successfully\n" SUCCESSFUL_BOOT_STRING "\n"
|
||||
.byte 0
|
4
grub-core/tests/boot/kfreebsd-aout.cfg
Normal file
4
grub-core/tests/boot/kfreebsd-aout.cfg
Normal file
|
@ -0,0 +1,4 @@
|
|||
kfreebsd /kfreebsd.aout
|
||||
boot
|
||||
# Shouln't happen
|
||||
halt
|
8
grub-core/tests/boot/kfreebsd.cfg
Normal file
8
grub-core/tests/boot/kfreebsd.cfg
Normal file
|
@ -0,0 +1,8 @@
|
|||
kfreebsd /kfreebsd -hv
|
||||
kfreebsd_loadenv /kfreebsd_env
|
||||
kfreebsd_module /mfsroot.gz type=mfs_root
|
||||
set kFreeBSD.hw.hasbrokenint12=1
|
||||
fakebios
|
||||
boot
|
||||
# Shouln't happen
|
||||
halt
|
114
grub-core/tests/boot/kfreebsd.init-i386.S
Normal file
114
grub-core/tests/boot/kfreebsd.init-i386.S
Normal file
|
@ -0,0 +1,114 @@
|
|||
/*
|
||||
* GRUB -- GRand Unified Bootloader
|
||||
* Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
*
|
||||
* GRUB 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define MODE_RDRW 2
|
||||
#define FLAGS_NONE 0
|
||||
#define SYSCALL_OPEN 5
|
||||
#define SYSCALL_WRITE 4
|
||||
#define SYSCALL_RESET 55
|
||||
#define SYSCALL_FSYNC 95
|
||||
#define SYSCALL_ARCH 165
|
||||
#define SYSCALL_EXIT 1
|
||||
#define SYSCALL_ARCH_IOPL 4
|
||||
#define SYSCALL_INT 0x80
|
||||
|
||||
#define RESET_NOSYNC 0x4
|
||||
#define RESET_HALT 0x8
|
||||
#define RESET_POWEROFF 0x4000
|
||||
#define SHUTDOWN_PORT 0x8900
|
||||
|
||||
.section ".init", "ax"
|
||||
.global start,_start
|
||||
start:
|
||||
_start:
|
||||
/* open. */
|
||||
movl $SYSCALL_OPEN, %eax
|
||||
pushl $FLAGS_NONE
|
||||
pushl $MODE_RDRW
|
||||
leal device, %ebx
|
||||
pushl %ebx
|
||||
pushl $0
|
||||
int $SYSCALL_INT
|
||||
addl $16, %esp
|
||||
movl %eax, %ecx
|
||||
|
||||
/* write. */
|
||||
movl $SYSCALL_WRITE, %eax
|
||||
pushl $(messageend-message)
|
||||
leal message, %ebx
|
||||
pushl %ebx
|
||||
pushl %ecx
|
||||
pushl $0
|
||||
int $SYSCALL_INT
|
||||
addl $16, %esp
|
||||
|
||||
/* fsync. */
|
||||
movl $SYSCALL_FSYNC, %eax
|
||||
pushl %ecx
|
||||
pushl $0
|
||||
int $SYSCALL_INT
|
||||
addl $8, %esp
|
||||
|
||||
/* IOPL. */
|
||||
movl $SYSCALL_ARCH, %eax
|
||||
pushl $iopl_arg
|
||||
pushl $SYSCALL_ARCH_IOPL
|
||||
pushl $0
|
||||
int $SYSCALL_INT
|
||||
addl $12, %esp
|
||||
|
||||
movw $SHUTDOWN_PORT, %dx
|
||||
movb $'S', %al
|
||||
outb %al, %dx
|
||||
movb $'h', %al
|
||||
outb %al, %dx
|
||||
movb $'u', %al
|
||||
outb %al, %dx
|
||||
movb $'t', %al
|
||||
outb %al, %dx
|
||||
movb $'d', %al
|
||||
outb %al, %dx
|
||||
movb $'o', %al
|
||||
outb %al, %dx
|
||||
movb $'w', %al
|
||||
outb %al, %dx
|
||||
movb $'n', %al
|
||||
outb %al, %dx
|
||||
|
||||
/* shutdown. */
|
||||
movl $SYSCALL_RESET, %eax
|
||||
pushl $(RESET_POWEROFF|RESET_HALT|RESET_NOSYNC)
|
||||
pushl $0
|
||||
int $SYSCALL_INT
|
||||
addl $8, %esp
|
||||
|
||||
/* exit (1). Shouldn't be reached. */
|
||||
movl $SYSCALL_EXIT, %eax
|
||||
pushl $1
|
||||
pushl $0
|
||||
int $SYSCALL_INT
|
||||
device:
|
||||
.ascii "/dev/console"
|
||||
.byte 0
|
||||
message:
|
||||
.ascii "Boot Test Passed Successfully\n" SUCCESSFUL_BOOT_STRING "\n"
|
||||
messageend:
|
||||
iopl_arg:
|
||||
.long SHUTDOWN_PORT
|
||||
.long 1
|
||||
.long 1
|
98
grub-core/tests/boot/kfreebsd.init-x86_64.S
Normal file
98
grub-core/tests/boot/kfreebsd.init-x86_64.S
Normal file
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
* GRUB -- GRand Unified Bootloader
|
||||
* Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
*
|
||||
* GRUB 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define MODE_RDRW 2
|
||||
#define FLAGS_NONE 0
|
||||
#define SYSCALL_ARCH 165
|
||||
#define SYSCALL_OPEN 5
|
||||
#define SYSCALL_WRITE 4
|
||||
#define SYSCALL_RESET 55
|
||||
#define SYSCALL_EXIT 1
|
||||
#define SYSCALL_ARCH_IOPL 4
|
||||
#define SYSCALL_FSYNC 95
|
||||
|
||||
#define RESET_NOSYNC 0x4
|
||||
#define RESET_HALT 0x8
|
||||
#define RESET_POWEROFF 0x4000
|
||||
#define SHUTDOWN_PORT 0x8900
|
||||
|
||||
.section ".init", "ax"
|
||||
.global start,_start
|
||||
start:
|
||||
_start:
|
||||
/* open. */
|
||||
movq $SYSCALL_OPEN, %rax
|
||||
leaq device, %rdi
|
||||
movq $MODE_RDRW, %rsi
|
||||
movq $FLAGS_NONE, %rdx
|
||||
syscall
|
||||
movq %rax, %rdi
|
||||
|
||||
/* write. */
|
||||
leaq message, %rsi
|
||||
movq $SYSCALL_WRITE, %rax
|
||||
movq $(messageend - message), %rdx
|
||||
syscall
|
||||
|
||||
/* fsync. */
|
||||
movq $SYSCALL_FSYNC, %rax
|
||||
syscall
|
||||
|
||||
/* IOPL. */
|
||||
movq $SYSCALL_ARCH, %rax
|
||||
movq $SYSCALL_ARCH_IOPL, %rdi
|
||||
leaq iopl_arg, %rsi
|
||||
syscall
|
||||
|
||||
movw $SHUTDOWN_PORT, %dx
|
||||
movb $'S', %al
|
||||
outb %al, %dx
|
||||
movb $'h', %al
|
||||
outb %al, %dx
|
||||
movb $'u', %al
|
||||
outb %al, %dx
|
||||
movb $'t', %al
|
||||
outb %al, %dx
|
||||
movb $'d', %al
|
||||
outb %al, %dx
|
||||
movb $'o', %al
|
||||
outb %al, %dx
|
||||
movb $'w', %al
|
||||
outb %al, %dx
|
||||
movb $'n', %al
|
||||
outb %al, %dx
|
||||
|
||||
/* shutdown. */
|
||||
movq $SYSCALL_RESET, %rax
|
||||
movq $(RESET_POWEROFF|RESET_HALT|RESET_NOSYNC), %rdi
|
||||
syscall
|
||||
|
||||
/* exit (1). Shouldn't be reached. */
|
||||
movq $SYSCALL_EXIT, %rax
|
||||
movq $1, %rdi
|
||||
syscall
|
||||
device:
|
||||
.ascii "/dev/console"
|
||||
.byte 0
|
||||
message:
|
||||
.ascii "Boot Test Passed Successfully\n" SUCCESSFUL_BOOT_STRING "\n"
|
||||
messageend:
|
||||
iopl_arg:
|
||||
.long SHUTDOWN_PORT
|
||||
.long 1
|
||||
.long 1
|
5
grub-core/tests/boot/knetbsd.cfg
Normal file
5
grub-core/tests/boot/knetbsd.cfg
Normal file
|
@ -0,0 +1,5 @@
|
|||
knetbsd /knetbsd -h
|
||||
knetbsd_module_elf /miniroot.gz
|
||||
boot
|
||||
# Shouln't happen
|
||||
halt
|
5
grub-core/tests/boot/kopenbsd.cfg
Normal file
5
grub-core/tests/boot/kopenbsd.cfg
Normal file
|
@ -0,0 +1,5 @@
|
|||
kopenbsd /kopenbsd -h
|
||||
kopenbsd_ramdisk /ramdisk
|
||||
boot
|
||||
# Shouln't happen
|
||||
halt
|
3
grub-core/tests/boot/kopenbsdlabel.txt
Normal file
3
grub-core/tests/boot/kopenbsdlabel.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
# size offset fstype [fsize bsize bps/cpg]
|
||||
a: 256 0 4.2BSD 0 0 1
|
||||
c: 256 0 unused 0 0 # "raw" part, don't edit
|
5
grub-core/tests/boot/linux.cfg
Normal file
5
grub-core/tests/boot/linux.cfg
Normal file
|
@ -0,0 +1,5 @@
|
|||
linux /linux console=ttyS0 root=/dev/ram0
|
||||
initrd /initrd
|
||||
boot
|
||||
# Shouln't happen
|
||||
halt
|
79
grub-core/tests/boot/linux.init-i386.S
Normal file
79
grub-core/tests/boot/linux.init-i386.S
Normal file
|
@ -0,0 +1,79 @@
|
|||
/*
|
||||
* GRUB -- GRand Unified Bootloader
|
||||
* Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
*
|
||||
* GRUB 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define SYSCALL_WRITE 4
|
||||
#define SYSCALL_RESET 88
|
||||
#define SYSCALL_IOPL 110
|
||||
#define SYSCALL_EXIT 1
|
||||
#define SYSCALL_INT 0x80
|
||||
|
||||
#define STDOUT 1
|
||||
#define SHUTDOWN_MAGIC1 0xfee1dead
|
||||
#define SHUTDOWN_MAGIC2 0x28121969
|
||||
#define SHUTDOWN_MAGIC3 0x4321fedc
|
||||
|
||||
#define SHUTDOWN_PORT 0x8900
|
||||
|
||||
.text
|
||||
.global start, _start
|
||||
_start:
|
||||
start:
|
||||
/* write. */
|
||||
movl $SYSCALL_WRITE, %eax
|
||||
movl $STDOUT, %ebx
|
||||
leal message, %ecx
|
||||
movl $(messageend-message), %edx
|
||||
int $SYSCALL_INT
|
||||
|
||||
movl $SYSCALL_IOPL, %eax
|
||||
movl $3, %ebx
|
||||
int $SYSCALL_INT
|
||||
|
||||
movw $SHUTDOWN_PORT, %dx
|
||||
movb $'S', %al
|
||||
outb %al, %dx
|
||||
movb $'h', %al
|
||||
outb %al, %dx
|
||||
movb $'u', %al
|
||||
outb %al, %dx
|
||||
movb $'t', %al
|
||||
outb %al, %dx
|
||||
movb $'d', %al
|
||||
outb %al, %dx
|
||||
movb $'o', %al
|
||||
outb %al, %dx
|
||||
movb $'w', %al
|
||||
outb %al, %dx
|
||||
movb $'n', %al
|
||||
outb %al, %dx
|
||||
|
||||
/* shutdown. */
|
||||
movl $SYSCALL_RESET, %eax
|
||||
movl $SHUTDOWN_MAGIC1, %ebx
|
||||
movl $SHUTDOWN_MAGIC2, %ecx
|
||||
movl $SHUTDOWN_MAGIC3, %edx
|
||||
int $SYSCALL_INT
|
||||
|
||||
/* exit (1). Shouldn't be reached. */
|
||||
movl $SYSCALL_EXIT, %eax
|
||||
movl $1, %ebx
|
||||
int $SYSCALL_INT
|
||||
.data
|
||||
message:
|
||||
.ascii "Boot Test Passed Successfully\n" SUCCESSFUL_BOOT_STRING "\n"
|
||||
messageend:
|
78
grub-core/tests/boot/linux.init-x86_64.S
Normal file
78
grub-core/tests/boot/linux.init-x86_64.S
Normal file
|
@ -0,0 +1,78 @@
|
|||
/*
|
||||
* GRUB -- GRand Unified Bootloader
|
||||
* Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
*
|
||||
* GRUB 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* GRUB 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 GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define SYSCALL_WRITE 1
|
||||
#define SYSCALL_RESET 169
|
||||
#define SYSCALL_IOPL 172
|
||||
#define SYSCALL_EXIT 60
|
||||
|
||||
#define STDOUT 1
|
||||
#define SHUTDOWN_MAGIC1 0xfee1dead
|
||||
#define SHUTDOWN_MAGIC2 0x28121969
|
||||
#define SHUTDOWN_MAGIC3 0x4321fedc
|
||||
|
||||
#define SHUTDOWN_PORT 0x8900
|
||||
|
||||
.text
|
||||
.global start, _start
|
||||
_start:
|
||||
start:
|
||||
/* write. */
|
||||
movq $SYSCALL_WRITE, %rax
|
||||
movq $STDOUT, %rdi
|
||||
leaq message, %rsi
|
||||
movq $(messageend-message), %rdx
|
||||
syscall
|
||||
|
||||
movq $SYSCALL_IOPL, %rax
|
||||
movq $3, %rdi
|
||||
syscall
|
||||
|
||||
movw $SHUTDOWN_PORT, %dx
|
||||
movb $'S', %al
|
||||
outb %al, %dx
|
||||
movb $'h', %al
|
||||
outb %al, %dx
|
||||
movb $'u', %al
|
||||
outb %al, %dx
|
||||
movb $'t', %al
|
||||
outb %al, %dx
|
||||
movb $'d', %al
|
||||
outb %al, %dx
|
||||
movb $'o', %al
|
||||
outb %al, %dx
|
||||
movb $'w', %al
|
||||
outb %al, %dx
|
||||
movb $'n', %al
|
||||
outb %al, %dx
|
||||
|
||||
/* shutdown. */
|
||||
movq $SYSCALL_RESET, %rax
|
||||
movq $SHUTDOWN_MAGIC1, %rdi
|
||||
movq $SHUTDOWN_MAGIC2, %rsi
|
||||
movq $SHUTDOWN_MAGIC3, %rdx
|
||||
syscall
|
||||
|
||||
/* exit(1). Shouldn't be reached. */
|
||||
movq $SYSCALL_EXIT, %rax
|
||||
movq $1, %rdi
|
||||
syscall
|
||||
.data
|
||||
message:
|
||||
.ascii "Boot Test Passed Successfully\n" SUCCESSFUL_BOOT_STRING "\n"
|
||||
messageend:
|
5
grub-core/tests/boot/linux16.cfg
Normal file
5
grub-core/tests/boot/linux16.cfg
Normal file
|
@ -0,0 +1,5 @@
|
|||
linux16 /linux console=ttyS0 root=/dev/ram0
|
||||
initrd16 /initrd
|
||||
boot
|
||||
# Shouln't happen
|
||||
halt
|
4
grub-core/tests/boot/multiboot.cfg
Normal file
4
grub-core/tests/boot/multiboot.cfg
Normal file
|
@ -0,0 +1,4 @@
|
|||
multiboot /multiboot.elf
|
||||
boot
|
||||
# Shouln't happen
|
||||
halt
|
4
grub-core/tests/boot/multiboot2.cfg
Normal file
4
grub-core/tests/boot/multiboot2.cfg
Normal file
|
@ -0,0 +1,4 @@
|
|||
multiboot2 /multiboot2.elf
|
||||
boot
|
||||
# Shouln't happen
|
||||
halt
|
4
grub-core/tests/boot/ntldr.cfg
Normal file
4
grub-core/tests/boot/ntldr.cfg
Normal file
|
@ -0,0 +1,4 @@
|
|||
ntldr /ntldr.bin
|
||||
boot
|
||||
# Shouln't happen
|
||||
halt
|
4
grub-core/tests/boot/pc-chainloader.cfg
Normal file
4
grub-core/tests/boot/pc-chainloader.cfg
Normal file
|
@ -0,0 +1,4 @@
|
|||
chainloader /pc-chainloader.bin
|
||||
boot
|
||||
# Shouln't happen
|
||||
halt
|
Loading…
Add table
Add a link
Reference in a new issue