 f14fb60209
			
		
	
	
		f14fb60209
		
	
	
	
	
		
			
			* Updating common/lib * Updating lib/csu * Updating lib/libc * Updating libexec/ld.elf_so * Corrected test on __minix in featuretest to actually follow the meaning of the comment. * Cleaned up _REENTRANT-related defintions. * Disabled -D_REENTRANT for libfetch * Removing some unneeded __NBSD_LIBC defines and tests Change-Id: Ic1394baef74d11b9f86b312f5ff4bbc3cbf72ce2
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| #include "kernel/kernel.h" /* configures the kernel */
 | |
| 
 | |
| /* sections */
 | |
| 
 | |
| #include <machine/vm.h>
 | |
| #include "kernel/kernel.h"
 | |
| #include <minix/config.h>
 | |
| #include <minix/const.h>
 | |
| #include <minix/com.h>
 | |
| #include <machine/asm.h>
 | |
| #include <machine/interrupt.h>
 | |
| #include "archconst.h"
 | |
| #include "sconst.h"
 | |
| #include <machine/multiboot.h>
 | |
| 
 | |
| #include "arch_proto.h" /* K_STACK_SIZE */
 | |
| 
 | |
| #ifdef CONFIG_SMP
 | |
| #include "kernel/smp.h"
 | |
| #endif
 | |
| 
 | |
| /* Selected 386 tss offsets. */
 | |
| #define TSS3_S_SP0	4
 | |
| 
 | |
| IMPORT(copr_not_available_handler)
 | |
| IMPORT(params_size)
 | |
| IMPORT(params_offset)
 | |
| IMPORT(mon_ds)
 | |
| IMPORT(switch_to_user)
 | |
| IMPORT(multiboot_init)
 | |
| 
 | |
| .text
 | |
| /*===========================================================================*/
 | |
| /*				MINIX				     */
 | |
| /*===========================================================================*/
 | |
| .global MINIX
 | |
| MINIX:
 | |
| /* this is the entry point for the MINIX kernel */
 | |
| 	jmp multiboot_init
 | |
| 
 | |
| /* Multiboot header here*/
 | |
| 
 | |
| .balign 8
 | |
| 
 | |
| #define MULTIBOOT_FLAGS (MULTIBOOT_MEMORY_INFO | MULTIBOOT_PAGE_ALIGN)
 | |
| 
 | |
| multiboot_magic:
 | |
| 	.long MULTIBOOT_HEADER_MAGIC
 | |
| multiboot_flags:
 | |
| 	.long MULTIBOOT_FLAGS
 | |
| multiboot_checksum:
 | |
| 	.long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_FLAGS)
 | |
| 	.long 0
 | |
| 	.long 0
 | |
| 	.long 0
 | |
| 	.long 0
 | |
| 	.long 0
 | |
| /* Video mode */
 | |
| multiboot_mode_type:
 | |
| 	.long MULTIBOOT_VIDEO_MODE_EGA
 | |
| multiboot_width:
 | |
| 	.long MULTIBOOT_CONSOLE_COLS
 | |
| multiboot_height:
 | |
| 	.long MULTIBOOT_CONSOLE_LINES
 | |
| multiboot_depth:
 | |
| 	.long 0
 | |
| 
 | |
| multiboot_init:
 | |
| 	mov	$load_stack_start, %esp	/* make usable stack */
 | |
| 	mov	$0, %ebp
 | |
| 	push	$0	/* set flags to known good state */
 | |
| 	popf	/* esp, clear nested task and int enable */
 | |
| 	push	$0
 | |
| 
 | |
|         push    %ebx	/* multiboot information struct */
 | |
| 	push	%eax	/* multiboot magic number */
 | |
|         call    _C_LABEL(pre_init)
 | |
| 
 | |
| 	/* Kernel is mapped high now and ready to go, with
 | |
| 	 * the boot info pointer returnd in %eax. Set the
 | |
| 	 * highly mapped stack, initialize it, push the boot
 | |
| 	 * info pointer and jump to the highly mapped kernel.
 | |
| 	 */
 | |
| 	mov	$k_initial_stktop, %esp
 | |
| 	push	$0	/* Terminate stack */
 | |
| 	push	%eax
 | |
|         call    _C_LABEL(kmain)
 | |
| 
 | |
| 	/* not reached */
 | |
| hang:
 | |
| 	jmp hang
 | |
| 
 | |
| .data
 | |
| load_stack:
 | |
| 	.space 4096
 | |
| load_stack_start:
 |