ia64/xen-unstable

changeset 5463:39bf99b109dd

bitkeeper revision 1.1709.1.10 (42b08f028deGQkb0GcmyBpOwUB9Rjw)

More hyperprivops (slow for now)
Signed-off-by: Dan Magenheimer <dan.magenheimer@hp.com>
author djm@kirby.fc.hp.com
date Wed Jun 15 20:26:42 2005 +0000 (2005-06-15)
parents cb924d6ba79d
children dfa0c3f7cf60
files xen/arch/ia64/privop.c xen/arch/ia64/process.c
line diff
     1.1 --- a/xen/arch/ia64/privop.c	Wed Jun 15 16:27:06 2005 +0000
     1.2 +++ b/xen/arch/ia64/privop.c	Wed Jun 15 20:26:42 2005 +0000
     1.3 @@ -748,10 +748,16 @@ priv_emulate(VCPU *vcpu, REGS *regs, UIN
     1.4  #define HYPERPRIVOP_ITC_D		0x5
     1.5  #define HYPERPRIVOP_ITC_I		0x6
     1.6  #define HYPERPRIVOP_SSM_I		0x7
     1.7 -#define HYPERPRIVOP_MAX			0x7
     1.8 +#define HYPERPRIVOP_GET_IVR		0x8
     1.9 +#define HYPERPRIVOP_GET_TPR		0x9
    1.10 +#define HYPERPRIVOP_SET_TPR		0xa
    1.11 +#define HYPERPRIVOP_EOI			0xb
    1.12 +#define HYPERPRIVOP_SET_ITM		0xc
    1.13 +#define HYPERPRIVOP_MAX			0xc
    1.14  
    1.15  char *hyperpriv_str[HYPERPRIVOP_MAX+1] = {
    1.16  	0, "rfi", "rsm.dt", "ssm.dt", "cover", "itc.d", "itc.i", "ssm.i",
    1.17 +	"=ivr", "=tpr", "tpr=", "eoi", "itm=",
    1.18  	0
    1.19  };
    1.20  
    1.21 @@ -797,6 +803,23 @@ ia64_hyperprivop(unsigned long iim, REGS
    1.22  	    case HYPERPRIVOP_SSM_I:
    1.23  		(void)vcpu_set_psr_i(v);
    1.24  		return 1;
    1.25 +	    case HYPERPRIVOP_GET_IVR:
    1.26 +		(void)vcpu_get_ivr(v,&val);
    1.27 +		regs->r8 = val;
    1.28 +		return 1;
    1.29 +	    case HYPERPRIVOP_GET_TPR:
    1.30 +		(void)vcpu_get_tpr(v,&val);
    1.31 +		regs->r8 = val;
    1.32 +		return 1;
    1.33 +	    case HYPERPRIVOP_SET_TPR:
    1.34 +		(void)vcpu_set_tpr(v,regs->r8);
    1.35 +		return 1;
    1.36 +	    case HYPERPRIVOP_EOI:
    1.37 +		(void)vcpu_set_eoi(v,0L);
    1.38 +		return 1;
    1.39 +	    case HYPERPRIVOP_SET_ITM:
    1.40 +		(void)vcpu_set_itm(v,regs->r8);
    1.41 +		return 1;
    1.42  	}
    1.43  	return 0;
    1.44  }
     2.1 --- a/xen/arch/ia64/process.c	Wed Jun 15 16:27:06 2005 +0000
     2.2 +++ b/xen/arch/ia64/process.c	Wed Jun 15 20:26:42 2005 +0000
     2.3 @@ -754,7 +754,7 @@ if (!running_on_sim) { printf("SSC_OPEN,
     2.4  		vcpu_set_gr(current,8,-1L);
     2.5  		break;
     2.6  	    default:
     2.7 -		printf("ia64_handle_break: bad ssc code %lx, iip=%p\n",ssc,regs->cr_iip);
     2.8 +		printf("ia64_handle_break: bad ssc code %lx, iip=%p, b0=%p\n",ssc,regs->cr_iip,regs->b0);
     2.9  		break;
    2.10  	}
    2.11  	vcpu_increment_iip(current);