1217044Snwhitehorn# This script generates the PS3 hypervisor call header from a hypervisor 2217044Snwhitehorn# interface definition file. All lines that do not begin with HVCALL 3217044Snwhitehorn# or a bare # for comments are copied to the output header so that 4217044Snwhitehorn# enums, constant, C comments and the like can be passed through into the 5217044Snwhitehorn# header. 6217044Snwhitehorn# 7217044Snwhitehorn# Invoke like so: awk -f ps3-hv-header.awk < ps3-hvcall.master > ps3-hv.h 8217044Snwhitehorn# 9217044Snwhitehorn 10217044Snwhitehorn# $FreeBSD: releng/10.3/sys/powerpc/ps3/ps3-hv-header.awk 217044 2011-01-06 04:12:29Z nwhitehorn $ 11217044Snwhitehorn 12217044Snwhitehorn!/HVCALL.*/ && (!/#.*/ || /#define.*/ || /#include.*/) { 13217044Snwhitehorn print($0); 14217044Snwhitehorn} 15217044Snwhitehorn 16217044Snwhitehorn/HVCALL.*/ { 17217044Snwhitehorn split($5, outs, ",") 18217044Snwhitehorn if ($4 == "UNUSED") 19217044Snwhitehorn split("", ins, ",") 20217044Snwhitehorn else 21217044Snwhitehorn split($4, ins, ",") 22217044Snwhitehorn 23217044Snwhitehorn printf("int %s(",$3); 24217044Snwhitehorn for (i = 1; i <= length(ins); i++) { 25217044Snwhitehorn printf("uint64_t %s", ins[i]); 26217044Snwhitehorn if (i < length(ins)) printf(", "); 27217044Snwhitehorn } 28217044Snwhitehorn 29217044Snwhitehorn if (length(outs) > 0 && length(ins) > 0) 30217044Snwhitehorn printf(", "); 31217044Snwhitehorn 32217044Snwhitehorn for (i = 1; i <= length(outs); i++) { 33217044Snwhitehorn printf("uint64_t *%s", outs[i]); 34217044Snwhitehorn if (i < length(outs)) printf(", "); 35217044Snwhitehorn } 36217044Snwhitehorn 37217044Snwhitehorn if (length(outs) == 0 && length(ins) == 0) 38217044Snwhitehorn printf("void"); 39217044Snwhitehorn 40217044Snwhitehorn printf(");\n"); 41217044Snwhitehorn} 42217044Snwhitehorn 43