Fixed bugs introduced by syncing with i386/isa/sio.c revision 1.143.

Submitted by:	Takahashi Yoshihiro <nyan@wyvern.cc.kogakuin.ac.jp>
This commit is contained in:
KATO Takenori 1998-02-02 07:59:05 +00:00
parent 971c9159f8
commit 4e82d9dc12
2 changed files with 48 additions and 32 deletions

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)com.c 7.5 (Berkeley) 5/16/91
* $Id: sio.c,v 1.49 1998/01/22 03:52:55 kato Exp $
* $Id: sio.c,v 1.50 1998/01/24 02:54:39 eivind Exp $
*/
#include "opt_comconsole.h"
@ -2317,36 +2317,36 @@ sioioctl(dev, cmd, data, flag, p)
}
#ifdef PC98
if(IS_8251(com->pc98_if_type)){
switch (cmd) {
case TIOCSBRK:
switch (cmd) {
case TIOCSBRK:
com_send_break_on( com );
break;
case TIOCCBRK:
case TIOCCBRK:
com_send_break_off( com );
break;
case TIOCSDTR:
case TIOCSDTR:
com_tiocm_bis(com, TIOCM_DTR | TIOCM_RTS );
break;
case TIOCCDTR:
case TIOCCDTR:
com_tiocm_bic(com, TIOCM_DTR);
break;
/*
* XXX should disallow changing MCR_RTS if CS_RTS_IFLOW is set. The
* changes get undone on the next call to comparam().
*/
case TIOCMSET:
case TIOCMSET:
com_tiocm_set( com, *(int *)data );
break;
case TIOCMBIS:
case TIOCMBIS:
com_tiocm_bis( com, *(int *)data );
break;
case TIOCMBIC:
case TIOCMBIC:
com_tiocm_bic( com, *(int *)data );
break;
case TIOCMGET:
case TIOCMGET:
*(int *)data = com_tiocm_get(com);
break;
case TIOCMSDTRWAIT:
case TIOCMSDTRWAIT:
/* must be root since the wait applies to following logins */
error = suser(p->p_ucred, &p->p_acflag);
if (error != 0) {
@ -2355,21 +2355,21 @@ sioioctl(dev, cmd, data, flag, p)
}
com->dtr_wait = *(int *)data * hz / 100;
break;
case TIOCMGDTRWAIT:
case TIOCMGDTRWAIT:
*(int *)data = com->dtr_wait * 100 / hz;
break;
case TIOCTIMESTAMP:
case TIOCTIMESTAMP:
com->do_timestamp = TRUE;
*(struct timeval *)data = com->timestamp;
break;
case TIOCDCDTIMESTAMP:
case TIOCDCDTIMESTAMP:
com->do_dcd_timestamp = TRUE;
*(struct timeval *)data = com->dcd_timestamp;
break;
default:
default:
splx(s);
return (ENOTTY);
}
}
} else {
#endif
switch (cmd) {
@ -2385,6 +2385,10 @@ sioioctl(dev, cmd, data, flag, p)
case TIOCCDTR:
(void)commctl(com, TIOCM_DTR, DMBIC);
break;
/*
* XXX should disallow changing MCR_RTS if CS_RTS_IFLOW is set. The
* changes get undone on the next call to comparam().
*/
case TIOCMSET:
(void)commctl(com, *(int *)data, DMSET);
break;
@ -2413,6 +2417,10 @@ sioioctl(dev, cmd, data, flag, p)
com->do_timestamp = TRUE;
*(struct timeval *)data = com->timestamp;
break;
case TIOCDCDTIMESTAMP:
com->do_dcd_timestamp = TRUE;
*(struct timeval *)data = com->dcd_timestamp;
break;
default:
splx(s);
return (ENOTTY);

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)com.c 7.5 (Berkeley) 5/16/91
* $Id: sio.c,v 1.49 1998/01/22 03:52:55 kato Exp $
* $Id: sio.c,v 1.50 1998/01/24 02:54:39 eivind Exp $
*/
#include "opt_comconsole.h"
@ -2317,36 +2317,36 @@ sioioctl(dev, cmd, data, flag, p)
}
#ifdef PC98
if(IS_8251(com->pc98_if_type)){
switch (cmd) {
case TIOCSBRK:
switch (cmd) {
case TIOCSBRK:
com_send_break_on( com );
break;
case TIOCCBRK:
case TIOCCBRK:
com_send_break_off( com );
break;
case TIOCSDTR:
case TIOCSDTR:
com_tiocm_bis(com, TIOCM_DTR | TIOCM_RTS );
break;
case TIOCCDTR:
case TIOCCDTR:
com_tiocm_bic(com, TIOCM_DTR);
break;
/*
* XXX should disallow changing MCR_RTS if CS_RTS_IFLOW is set. The
* changes get undone on the next call to comparam().
*/
case TIOCMSET:
case TIOCMSET:
com_tiocm_set( com, *(int *)data );
break;
case TIOCMBIS:
case TIOCMBIS:
com_tiocm_bis( com, *(int *)data );
break;
case TIOCMBIC:
case TIOCMBIC:
com_tiocm_bic( com, *(int *)data );
break;
case TIOCMGET:
case TIOCMGET:
*(int *)data = com_tiocm_get(com);
break;
case TIOCMSDTRWAIT:
case TIOCMSDTRWAIT:
/* must be root since the wait applies to following logins */
error = suser(p->p_ucred, &p->p_acflag);
if (error != 0) {
@ -2355,21 +2355,21 @@ sioioctl(dev, cmd, data, flag, p)
}
com->dtr_wait = *(int *)data * hz / 100;
break;
case TIOCMGDTRWAIT:
case TIOCMGDTRWAIT:
*(int *)data = com->dtr_wait * 100 / hz;
break;
case TIOCTIMESTAMP:
case TIOCTIMESTAMP:
com->do_timestamp = TRUE;
*(struct timeval *)data = com->timestamp;
break;
case TIOCDCDTIMESTAMP:
case TIOCDCDTIMESTAMP:
com->do_dcd_timestamp = TRUE;
*(struct timeval *)data = com->dcd_timestamp;
break;
default:
default:
splx(s);
return (ENOTTY);
}
}
} else {
#endif
switch (cmd) {
@ -2385,6 +2385,10 @@ sioioctl(dev, cmd, data, flag, p)
case TIOCCDTR:
(void)commctl(com, TIOCM_DTR, DMBIC);
break;
/*
* XXX should disallow changing MCR_RTS if CS_RTS_IFLOW is set. The
* changes get undone on the next call to comparam().
*/
case TIOCMSET:
(void)commctl(com, *(int *)data, DMSET);
break;
@ -2413,6 +2417,10 @@ sioioctl(dev, cmd, data, flag, p)
com->do_timestamp = TRUE;
*(struct timeval *)data = com->timestamp;
break;
case TIOCDCDTIMESTAMP:
com->do_dcd_timestamp = TRUE;
*(struct timeval *)data = com->dcd_timestamp;
break;
default:
splx(s);
return (ENOTTY);