Cleanups the boot2 for pc98. There is no functional change.

- Make setting machine type and getting geom conditional for future.
  - Remove unused RAWBOOT and CDBOOT supports.
  - Remove unneeded include.
  - Fix warnings.

MFC after:	1 week
This commit is contained in:
nyan 2009-12-11 12:36:59 +00:00
parent 283e12cf4e
commit 0c487f55f0
8 changed files with 18 additions and 164 deletions

View File

@ -28,6 +28,12 @@ CFLAGS+= -DCOMCONSOLE=${BOOT_COMCONSOLE_PORT} \
BOOT_COMCONSOLE_SPEED?=9600
CFLAGS+= -DCOMSPEED=${BOOT_COMCONSOLE_SPEED}
# Set machine type to PC98_SYSTEM_PARAMETER
CFLAGS+= -DSET_MACHINE_TYPE
# Initialize the bi_bios_geom using the BIOS geometry
CFLAGS+= -DGET_BIOSGEOM
# Enable code to take the default boot string from a fixed location on the
# disk. See nextboot(8) and README.386BSD for more info.
#CFLAGS+= -DNAMEBLOCK

View File

@ -91,8 +91,6 @@ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "asm.h"
.text
#ifndef CDBOOT
/*
* PC-9801/PC-9821 SCSI MO booting
* 2002/06/05-07/03 Kawanobe Koh <kawanobe@st.rim.or.jp>
@ -198,98 +196,6 @@ read_end:
ret
#else /* CDBOOT */
/*
* int
* getbootspec(struct specpacket *offset)
*
* Read CD-ROM boot specification packet to "offset".
*/
ENTRY(getbootspec)
push %ebp
mov %esp, %ebp
push %esi
push %ebx
movw 0x8(%ebp), %si
mov $0x7f, %edx
/* prot_to_real will set %es to BOOTSEG */
call EXT(prot_to_real) /* enter real mode */
movw $0x4b01, %ax /* (do not) terminate disk emulation */
movb $0x7f, %dl /* any drive */
sti
int $0x13
cli
/* save return value (actually movw %ax, %bx) */
mov %eax, %ebx
data32
call EXT(real_to_prot) /* back to protected mode */
xor %eax, %eax
movb %bh, %al /* return value in %ax */
pop %ebx
pop %esi
pop %ebp
ret
/*
* int
* biosreadlba(struct daddrpacket *daddr)
* Read sectors using the BIOS "read extended" function
* BIOS call "INT 0x13 Function 0x42" to read sectors from disk into memory
* Call with %ah = 0x42
* %dl = drive (0x0 for floppy disk, or emulated CD)
* %ds:%si = ptr to disk address packet
* Return:
* %ah = 0x0 on success; err code on failure
*/
ENTRY(biosreadlba)
push %ebp
mov %esp, %ebp
push %ebx
push %esi
movw 8(%ebp), %si
movl $0, %edx /* emulated CD is always drive 0 */
/* prot_to_real will set %es to BOOTSEG */
call EXT(prot_to_real) /* enter real mode */
movw $0x4200, %ax /* subfunction */
movb $0, %dl
sti
int $0x13
cli
/* save return value (actually movw %ax, %bx) */
mov %eax, %ebx
data32
call EXT(real_to_prot) /* back to protected mode */
xor %eax, %eax
movb %bh, %al /* return value in %ax */
pop %esi
pop %ebx
pop %ebp
ret
#endif /* !CDBOOT */
/*
* getc()
* BIOS call "INT 18H Function 00H" to read character from keyboard

View File

@ -85,12 +85,13 @@ boot(int drive)
unsigned char disk_equips;
/* Pick up the story from the Bios on geometry of disks */
#ifdef GET_BIOSGEOM
for(ret = 0; ret < 2; ret ++) {
if (*(unsigned char*)V(0xA155d) & (1 << ret)) {
bootinfo.bi_bios_geom[ret] = get_diskinfo(ret + 0x80);
}
}
#endif
bootinfo.bi_basemem = memsize(0);
bootinfo.bi_extmem = memsize(1);
@ -98,8 +99,10 @@ boot(int drive)
gateA20();
#ifdef SET_MACHINE_TYPE
/* set machine type to PC98_SYSTEM_PARAMETER */
machine_check();
#endif
/*
* The default boot device is the first partition in the

View File

@ -51,7 +51,7 @@ extern int loadflags;
extern struct disklabel disklabel;
/* asm.S */
#if ASM_ONLY
#ifdef ASM_ONLY
void real_to_prot(void);
void prot_to_real(void);
#endif
@ -84,9 +84,6 @@ void putchar(int c);
void delay1ms(void);
int gets(char *buf);
int strcmp(const char *s1, const char *s2);
#ifdef CDBOOT
int strcasecmp(const char *s1, const char *s2);
#endif /* !CDBOOT */
void memcpy(const void *from, void *to, size_t len);
void twiddle(void);
void machine_check(void);

View File

@ -87,7 +87,6 @@ devopen(void)
di = get_diskinfo(dosdev_copy);
spc = (spt = SPT(di)) * HEADS(di);
#ifndef RAWBOOT
if ((dosdev_copy & 0xf0) == 0x90)
{
boff = 0;
@ -119,7 +118,7 @@ devopen(void)
boff = dl->d_partitions[part].p_offset -
dl->d_partitions[2].p_offset + sector;
}
#endif /* RAWBOOT */
return 0;
}

View File

@ -162,7 +162,7 @@ delay1ms(void)
(void)outb(0x5f,0); /* about 600ns */
}
static __inline int
static int
isch(void)
{
int isc;
@ -182,7 +182,7 @@ isch(void)
return (serial_ischar());
}
static __inline unsigned
static unsigned
pword(unsigned physaddr)
{
static int counter = 0;
@ -246,24 +246,6 @@ strcmp(const char *s1, const char *s2)
return 1;
}
#ifdef CDBOOT
int
strcasecmp(const char *s1, const char *s2)
{
/*
* We only consider ASCII chars and don't anticipate
* control characters (they are invalid in filenames
* anyway).
*/
while ((*s1 & 0x5f) == (*s2 & 0x5f)) {
if (!*s1++)
return 0;
s2++;
}
return 1;
}
#endif /* !CDBOOT */
void
memcpy(const void *from, void *to, size_t len)
{
@ -349,6 +331,7 @@ void putc(int c)
outb(0x60, pos >> 8);
}
#ifdef SET_MACHINE_TYPE
void machine_check(void)
{
int ret;
@ -394,3 +377,4 @@ void machine_check(void)
(*(unsigned long *)V(0xA1620)) = ret;
}
#endif

View File

@ -67,7 +67,6 @@ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.file "serial.S"
#include <dev/sio/sioreg.h>
#include "asm.h"
.text

View File

@ -53,10 +53,6 @@ static int mapblock;
int poff;
#ifdef RAWBOOT
#define STARTBYTE 8192 /* Where on the media the kernel starts */
#endif
static int block_map(int file_block);
static int find(char *path);
@ -74,7 +70,6 @@ xread(char *addr, int size)
}
}
#ifndef RAWBOOT
void
read(char *buffer, int count)
{
@ -102,40 +97,6 @@ read(char *buffer, int count)
poff += size;
}
}
#else
void
read(char *buffer, int count)
{
int cnt, bnum, off, size;
off = STARTBYTE + poff;
poff += count;
/* Read any unaligned bit at the front */
cnt = off & 511;
if (cnt) {
size = 512-cnt;
if (count < size)
size = count;
devread(iobuf, off >> 9, 512);
memcpy(iobuf+cnt, buffer, size);
count -= size;
off += size;
buffer += size;
}
size = count & (~511);
if (size && (off & (~511))) {
devread(buffer, off >> 9, size);
off += size;
count -= size;
buffer += size;
}
if (count) {
devread(iobuf, off >> 9, 512);
memcpy(iobuf, buffer, count);
}
}
#endif
static int
find(char *path)
@ -263,7 +224,7 @@ openrd(void)
biosdrive = biosdrivedigit - '0';
if (biosdrivedigit == '\0') {
biosdrive = dosdev & 0x0f;
#if BOOT_HD_BIAS > 0
#if defined(BOOT_HD_BIAS) && (BOOT_HD_BIAS > 0)
/* XXX */
if (maj == 4)
biosdrive += BOOT_HD_BIAS;
@ -299,7 +260,6 @@ openrd(void)
if (devopen())
return 1;
#ifndef RAWBOOT
/***********************************************\
* Load Filesystem info (mount the device) *
\***********************************************/
@ -316,6 +276,6 @@ openrd(void)
return -1;
}
poff = 0;
#endif /* RAWBOOT */
return 0;
}