Changeset 8cd140f2 in mainline for kernel/arch/ia32xen/include
- Timestamp:
- 2006-12-11T14:14:46Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 134877d
- Parents:
- b82a13c
- Location:
- kernel/arch/ia32xen/include
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32xen/include/boot/boot.h
rb82a13c r8cd140f2 118 118 pfn_t store_mfn; /**< Shared page (machine page) */ 119 119 evtchn_t store_evtchn; /**< Event channel for store communication */ 120 pfn_t console_mfn; /**< Console page (machine page) */ 121 evtchn_t console_evtchn; /**< Event channel for console messages */ 120 121 union { 122 struct { 123 pfn_t mfn; /**< Console page (machine page) */ 124 evtchn_t evtchn; /**< Event channel for console messages */ 125 } domU; 126 127 struct { 128 uint32_t info_off; /**< Offset of console_info struct */ 129 uint32_t info_size; /**< Size of console_info struct from start */ 130 } dom0; 131 } console; 132 122 133 pte_t *ptl0; /**< Boot PTL0 (kernel address) */ 123 134 uint32_t pt_frames; /**< Number of bootstrap page table frames */ … … 127 138 int8_t cmd_line[GUEST_CMDLINE]; 128 139 } start_info_t; 140 141 #define XEN_CONSOLE_VGA 0x03 142 #define XEN_CONSOLE_VESA 0x23 143 144 typedef struct { 145 uint8_t video_type; 146 147 union { 148 struct { 149 uint16_t font_height; 150 uint16_t cursor_x; 151 uint16_t cursor_y; 152 uint16_t rows; 153 uint16_t columns; 154 } vga; 155 156 struct { 157 uint16_t width; 158 uint16_t height; 159 uint16_t bytes_per_line; 160 uint16_t bits_per_pixel; 161 uint32_t lfb_base; 162 uint32_t lfb_size; 163 uint8_t red_pos; 164 uint8_t red_size; 165 uint8_t green_pos; 166 uint8_t green_size; 167 uint8_t blue_pos; 168 uint8_t blue_size; 169 uint8_t rsvd_pos; 170 uint8_t rsvd_size; 171 } vesa_lfb; 172 } info; 173 } console_info_t; 129 174 130 175 typedef struct { -
kernel/arch/ia32xen/include/hypercall.h
rb82a13c r8cd140f2 62 62 #define XEN_VERSION 17 63 63 #define XEN_CONSOLE_IO 18 64 #define XEN_VM_ASSIST 2165 64 #define XEN_MMUEXT_OP 26 66 65 … … 102 101 103 102 104 /*105 * Commands to XEN_VM_ASSIST106 */107 #define VMASST_CMD_ENABLE 0108 #define VMASST_CMD_DISABLE 1109 #define VMASST_TYPE_4GB_SEGMENTS 0110 #define VMASST_TYPE_4GB_SEGMENTS_NOTIFY 1111 #define VMASST_TYPE_WRITABLE_PAGETABLES 2112 113 114 103 #define DOMID_SELF (0x7FF0U) 115 104 #define DOMID_IO (0x7FF1U) … … 219 208 { 220 209 return hypercall3(XEN_CONSOLE_IO, cmd, count, str); 221 }222 223 static inline int xen_vm_assist(const unsigned int cmd, const unsigned int type)224 {225 return hypercall2(XEN_VM_ASSIST, cmd, type);226 210 } 227 211 -
kernel/arch/ia32xen/include/mm/page.h
rb82a13c r8cd140f2 77 77 mmu_ext.cmd = MMUEXT_NEW_BASEPTR; \ 78 78 mmu_ext.mfn = ADDR2PFN(PA2MA(ptl0)); \ 79 xen_mmuext_op(&mmu_ext, 1, NULL, DOMID_SELF); \79 ASSERT(xen_mmuext_op(&mmu_ext, 1, NULL, DOMID_SELF) == 0); \ 80 80 } 81 81 82 82 #define SET_PTL1_ADDRESS_ARCH(ptl0, i, a) { \ 83 mmuext_op_t mmu_ext; \ 84 \ 85 mmu_ext.cmd = MMUEXT_PIN_L1_TABLE; \ 86 mmu_ext.mfn = ADDR2PFN(PA2MA(a)); \ 87 ASSERT(xen_mmuext_op(&mmu_ext, 1, NULL, DOMID_SELF) == 0); \ 88 \ 83 89 mmu_update_t update; \ 84 90 \ 85 91 update.ptr = PA2MA(KA2PA(&((pte_t *) (ptl0))[(i)])); \ 86 update.val = PA2MA(a) | 0x0003; \ 87 xen_mmu_update(&update, 1, NULL, DOMID_SELF); \ 88 } 92 update.val = PA2MA(a); \ 93 ASSERT(xen_mmu_update(&update, 1, NULL, DOMID_SELF) == 0); \ 94 } 95 89 96 #define SET_PTL2_ADDRESS_ARCH(ptl1, i, a) 90 97 #define SET_PTL3_ADDRESS_ARCH(ptl2, i, a) 91 #define SET_FRAME_ADDRESS_ARCH(ptl3, i, a) (((pte_t *) (ptl3))[(i)].frame_address = PA2MA(a) >> 12) 98 #define SET_FRAME_ADDRESS_ARCH(ptl3, i, a) { \ 99 mmu_update_t update; \ 100 \ 101 update.ptr = PA2MA(KA2PA(&((pte_t *) (ptl3))[(i)])); \ 102 update.val = PA2MA(a); \ 103 ASSERT(xen_mmu_update(&update, 1, NULL, DOMID_SELF) == 0); \ 104 } 92 105 93 106 #define GET_PTL1_FLAGS_ARCH(ptl0, i) get_pt_flags((pte_t *) (ptl0), (index_t)(i)) … … 197 210 static inline void set_pt_flags(pte_t *pt, index_t i, int flags) 198 211 { 199 pte_t *p = &pt[i];200 201 p ->page_cache_disable = !(flags & PAGE_CACHEABLE);202 p ->present = !(flags & PAGE_NOT_PRESENT);203 p ->uaccessible = (flags & PAGE_USER) != 0;204 p ->writeable = (flags & PAGE_WRITE) != 0;205 p ->global = (flags & PAGE_GLOBAL) != 0;212 pte_t p = pt[i]; 213 214 p.page_cache_disable = !(flags & PAGE_CACHEABLE); 215 p.present = !(flags & PAGE_NOT_PRESENT); 216 p.uaccessible = (flags & PAGE_USER) != 0; 217 p.writeable = (flags & PAGE_WRITE) != 0; 218 p.global = (flags & PAGE_GLOBAL) != 0; 206 219 207 220 /* 208 221 * Ensure that there is at least one bit set even if the present bit is cleared. 209 222 */ 210 p->soft_valid = true; 223 p.soft_valid = true; 224 225 mmu_update_t update; 226 227 update.ptr = PA2MA(KA2PA(&(pt[i]))); 228 update.pte = p; 229 xen_mmu_update(&update, 1, NULL, DOMID_SELF); 211 230 } 212 231
Note:
See TracChangeset
for help on using the changeset viewer.