/*
 * reboot1.S
 *
 * Copyright 2004, Minoru Murashima. All rights reserved.
 * Distributed under the terms of the BSD License.
 */


#define ASM_FILE


#include"segment.h"


.text


/*
 * void reboot();
 * システムを再起動する。
 */
.globl reboot
reboot:
	cli

	lidt	realIdtr

/* Flash TLB. */
	movl	%cr0,%eax
	andl	$0x7fffffff,%eax
	movl	%eax,%cr0
	xorl	%eax,%eax
	movl	%eax,%cr3

/* リアルモード用セグメントのロード。 */
	movl	$REAL_DATA_DES,%eax
	movl	%eax,%ss
	movl	%eax,%ds
	movl	%eax,%es
	movl	%eax,%fs
	movl	%eax,%gs
	ljmp	$REAL_CODE_DES,$switchRealMode


.data


/* リアルモード用IDTR. */
realIdtr:
	.word	0x3ff
	.long	0
