xen: fix early console
This commit is contained in:
parent
5ba95fdb07
commit
2060daf3b0
3 changed files with 10 additions and 20 deletions
|
@ -59,6 +59,7 @@ void insl(int, void*, int);
|
|||
int intrdisable(int, void (*)(Ureg *, void *), void*, int, char*);
|
||||
void intrenable(int, void (*)(Ureg*, void*), void*, int, char*);
|
||||
int ioalloc(int, int, int, char*);
|
||||
void ioinit(void);
|
||||
int isaconfig(char*, int, ISAConf*);
|
||||
void kbdenable(void);
|
||||
#define kmapinval()
|
||||
|
|
|
@ -73,8 +73,9 @@ main(void)
|
|||
{
|
||||
mach0init();
|
||||
options();
|
||||
quotefmtinstall();
|
||||
ioinit();
|
||||
xenconsinit();
|
||||
quotefmtinstall();
|
||||
|
||||
//consdebug = rdb;
|
||||
print("\nPlan 9 (%s)\n", xenstart->magic);
|
||||
|
|
|
@ -90,7 +90,7 @@ interrupt(Ureg*, void *arg)
|
|||
coherence();
|
||||
while (cons != con->in_prod) {
|
||||
c = con->in[MASK_XENCONS_IDX(cons++, con->in)];
|
||||
uartrecv(uart, c & 0xFF);
|
||||
uartrecv(uart, c);
|
||||
}
|
||||
coherence();
|
||||
con->in_cons = cons;
|
||||
|
@ -232,22 +232,13 @@ xenputc(Uart*, int c)
|
|||
struct xencons_interface *con = xencons.intf;
|
||||
unsigned long prod;
|
||||
|
||||
c &= 0xFF;
|
||||
|
||||
ilock(&xencons.txlock);
|
||||
/*
|
||||
while(con->out_cons == con->out_prod)
|
||||
HYPERVISOR_yield();
|
||||
*/
|
||||
if(con->out_cons == con->out_prod){
|
||||
iunlock(&xencons.txlock);
|
||||
return;
|
||||
}
|
||||
|
||||
prod = con->out_prod;
|
||||
|
||||
if((con->out[MASK_XENCONS_IDX(prod++, con->out)] = c) == '\n')
|
||||
con->out[MASK_XENCONS_IDX(prod++, con->out)] = '\r';
|
||||
if((prod - con->out_cons) < sizeof(con->out)){
|
||||
if (c == '\n')
|
||||
con->out[MASK_XENCONS_IDX(prod++, con->out)] = '\r';
|
||||
con->out[MASK_XENCONS_IDX(prod++, con->out)] = c;
|
||||
}
|
||||
|
||||
coherence();
|
||||
con->out_prod = prod;
|
||||
|
@ -303,6 +294,7 @@ xenconsinit(void)
|
|||
xencons.evtchn = xenstart->console_evtchn;
|
||||
|
||||
consuart = &xenuart;
|
||||
consuart->console = 1;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -326,9 +318,5 @@ kbdenable(void)
|
|||
|
||||
consuart = uart;
|
||||
uart->console = 1;
|
||||
|
||||
uartputs("CONSOLE1\n", 9);
|
||||
|
||||
//*(char*)0 = 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue