cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

gen-insn-x86-dat.awk (1343B)


      1#!/bin/awk -f
      2# SPDX-License-Identifier: GPL-2.0-only
      3# gen-insn-x86-dat.awk: script to convert data for the insn-x86 test
      4# Copyright (c) 2015, Intel Corporation.
      5#
      6
      7BEGIN {
      8	print "/*"
      9	print " * Generated by gen-insn-x86-dat.sh and gen-insn-x86-dat.awk"
     10	print " * from insn-x86-dat-src.c for inclusion by insn-x86.c"
     11	print " * Do not change this code."
     12	print "*/\n"
     13	op = ""
     14	branch = ""
     15	rel = 0
     16	going = 0
     17}
     18
     19/ Start here / {
     20	going = 1
     21}
     22
     23/ Stop here / {
     24	going = 0
     25}
     26
     27/^\s*[0-9a-fA-F]+\:/ {
     28	if (going) {
     29		colon_pos = index($0, ":")
     30		useful_line = substr($0, colon_pos + 1)
     31		first_pos = match(useful_line, "[0-9a-fA-F]")
     32		useful_line = substr(useful_line, first_pos)
     33		gsub("\t", "\\t", useful_line)
     34		printf "{{"
     35		len = 0
     36		for (i = 2; i <= NF; i++) {
     37			if (match($i, "^[0-9a-fA-F][0-9a-fA-F]$")) {
     38				printf "0x%s, ", $i
     39				len += 1
     40			} else {
     41				break
     42			}
     43		}
     44		printf "}, %d, %s, \"%s\", \"%s\",", len, rel, op, branch
     45		printf "\n\"%s\",},\n", useful_line
     46		op = ""
     47		branch = ""
     48		rel = 0
     49	}
     50}
     51
     52/ Expecting: / {
     53	expecting_str = " Expecting: "
     54	expecting_len = length(expecting_str)
     55	expecting_pos = index($0, expecting_str)
     56	useful_line = substr($0, expecting_pos + expecting_len)
     57	for (i = 1; i <= NF; i++) {
     58		if ($i == "Expecting:") {
     59			i++
     60			op = $i
     61			i++
     62			branch = $i
     63			i++
     64			rel = $i
     65			break
     66		}
     67	}
     68}