Changeset adf7f9c in mainline


Ignore:
Timestamp:
2006-08-02T00:00:39Z (18 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
deaa22f
Parents:
7c5a8dd
Message:

remap console page

Location:
kernel/arch/xen32
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/xen32/include/drivers/xconsole.h

    r7c5a8dd radf7f9c  
    3636#define __XCONSOLE_H__
    3737
     38#include <arch/types.h>
     39
     40typedef struct {
     41        char in[1024];
     42        char out[2048];
     43    uint32_t in_cons;
     44        uint32_t in_prod;
     45    uint32_t out_cons;
     46        uint32_t out_prod;
     47} xencons_t;
     48
     49extern xencons_t console_page;
     50
    3851extern void xen_console_init(void);
    3952
  • kernel/arch/xen32/src/boot/boot.S

    r7c5a8dd radf7f9c  
    7878shared_info:
    7979        .space PAGE_SIZE
     80
     81.global console_page
     82.org 0x2000
     83console_page:
     84        .space PAGE_SIZE
  • kernel/arch/xen32/src/drivers/xconsole.c

    r7c5a8dd radf7f9c  
    4040#include <console/console.h>
    4141#include <arch/hypercall.h>
    42 #include <mm/frame.h>
    4342
    4443#define MASK_INDEX(index, ring) ((index) & (sizeof(ring) - 1))
    45 
    46 typedef struct {
    47         char in[1024];
    48         char out[2048];
    49     uint32_t in_cons;
    50         uint32_t in_prod;
    51     uint32_t out_cons;
    52         uint32_t out_prod;
    53 } xencons_t;
    5444
    5545static bool asynchronous = false;
     
    7262{
    7363        if (asynchronous) {
    74                 xencons_t *console = (xencons_t *) PA2KA(MA2PA(PFN2ADDR(start_info.console_mfn)));
    75                 uint32_t cons = console->out_cons;
    76                 uint32_t prod = console->out_prod;
     64                uint32_t cons = console_page.out_cons;
     65                uint32_t prod = console_page.out_prod;
    7766               
    7867                memory_barrier();
    7968               
    80                 if ((prod - cons) > sizeof(console->out))
     69                if ((prod - cons) > sizeof(console_page.out))
    8170                        return;
    8271               
    8372                if (ch == '\n')
    84                         console->out[MASK_INDEX(prod++, console->out)] = '\r';
    85                 console->out[MASK_INDEX(prod++, console->out)] = ch;
     73                        console_page.out[MASK_INDEX(prod++, console_page.out)] = '\r';
     74                console_page.out[MASK_INDEX(prod++, console_page.out)] = ch;
    8675               
    8776                write_barrier();
    8877               
    89                 console->out_prod = prod;
     78                console_page.out_prod = prod;
    9079               
    9180                xen_notify_remote(start_info.console_evtchn);
  • kernel/arch/xen32/src/xen32.c

    r7c5a8dd radf7f9c  
    7979        pte.frame_address = ADDR2PFN((uintptr_t) start_info.shared_info);
    8080        xen_update_va_mapping(&shared_info, pte, UVMF_INVLPG);
     81       
     82        pte.present = 1;
     83        pte.writeable = 1;
     84        pte.frame_address = start_info.console_mfn;
     85        xen_update_va_mapping(&console_page, pte, UVMF_INVLPG);
    8186       
    8287        xen_set_callbacks(XEN_CS, xen_callback, XEN_CS, xen_failsafe_callback);
Note: See TracChangeset for help on using the changeset viewer.