1/* 2** Copyright 2001, Travis Geiselbrecht. All rights reserved. 3** Distributed under the terms of the NewOS License. 4*/ 5#ifndef _VCPU_H 6#define _VCPU_H 7 8#include <boot/stage2.h> 9 10// layout of the iframe is defined in boot/sh4/vcpu.S 11struct iframe { 12 unsigned int page_fault_addr; 13 unsigned int excode; 14 unsigned int spc; 15 unsigned int ssr; 16 unsigned int sgr; 17 unsigned int pr; 18 unsigned int macl; 19 unsigned int mach; 20 unsigned int gbr; 21 unsigned int fpscr; 22 unsigned int fpul; 23 24 float fr15_1; 25 float fr14_1; 26 float fr13_1; 27 float fr12_1; 28 float fr11_1; 29 float fr10_1; 30 float fr9_1; 31 float fr8_1; 32 float fr7_1; 33 float fr6_1; 34 float fr5_1; 35 float fr4_1; 36 float fr3_1; 37 float fr2_1; 38 float fr1_1; 39 float fr0_1; 40 41 float fr15_0; 42 float fr14_0; 43 float fr13_0; 44 float fr12_0; 45 float fr11_0; 46 float fr10_0; 47 float fr9_0; 48 float fr8_0; 49 float fr7_0; 50 float fr6_0; 51 float fr5_0; 52 float fr4_0; 53 float fr3_0; 54 float fr2_0; 55 float fr1_0; 56 float fr0_0; 57 58 unsigned int r7; 59 unsigned int r6; 60 unsigned int r5; 61 unsigned int r4; 62 unsigned int r3; 63 unsigned int r2; 64 unsigned int r1; 65 unsigned int r0; 66 unsigned int r14; 67 unsigned int r13; 68 unsigned int r12; 69 unsigned int r11; 70 unsigned int r10; 71 unsigned int r9; 72 unsigned int r8; 73}; 74 75// page table structures 76struct pdent { 77 unsigned int v:1; 78 unsigned int unused0:11; 79 unsigned int ppn:17; 80 unsigned int unused1:3; 81}; 82 83struct ptent { 84 unsigned int v:1; 85 unsigned int d:1; 86 unsigned int sh:1; 87 unsigned int sz:2; 88 unsigned int c:1; 89 unsigned int tlb_ent:6; 90 unsigned int ppn:17; 91 unsigned int pr:2; 92 unsigned int wt:1; 93}; 94 95// soft faults 96#define EXCEPTION_PAGE_FAULT_READ 0xfe 97#define EXCEPTION_PAGE_FAULT_WRITE 0xff 98 99// can only be used in stage2 100int vcpu_init(kernel_args *ka); 101 102#endif 103 104