static int processor_info(char *page) { char *p = page; u64 avail=1, status=1, control=1, feature_set=0; s64 ret; do { ret = ia64_pal_proc_get_features(&avail, &status, &control, feature_set); if (ret < 0) { return p - page; } if (ret == 1) { feature_set++; continue; } p = feature_set_info(p, avail, status, control, feature_set); feature_set++; } while(1); return p - page; }
static struct ia64_pal_retval pal_proc_get_features(struct kvm_vcpu *vcpu) { struct ia64_pal_retval result = {0, 0, 0, 0}; long in0, in1, in2, in3; kvm_get_pal_call_data(vcpu, &in0, &in1, &in2, &in3); result.status = ia64_pal_proc_get_features(&result.v0, &result.v1, &result.v2, in2); return result; }
static int processor_info(char *page) { char *p = page; const char **v = proc_features; u64 avail=1, status=1, control=1; int i; s64 ret; if ((ret=ia64_pal_proc_get_features(&avail, &status, &control)) != 0) return 0; for(i=0; i < 64; i++, v++,avail >>=1, status >>=1, control >>=1) { if ( ! *v ) continue; p += sprintf(p, "%-40s : %s%s %s\n", *v, avail & 0x1 ? "" : "NotImpl", avail & 0x1 ? (status & 0x1 ? "On" : "Off"): "", avail & 0x1 ? (control & 0x1 ? "Ctrl" : "NoCtrl"): ""); } return p - page; }