cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

test_lf_eqs.c (1486B)


      1#include <stdio.h>
      2
      3int main(void)
      4{
      5    int a, result;
      6    float b, c;
      7
      8    a = 0x1;
      9    b = 122.5;
     10    c = 123.5;
     11    result = 0x3;
     12    __asm
     13    ("lfeqd:\n\t"
     14     "l.addi    %0, %0, 0x1\n\t"
     15     "lf.sfeq.s %1, %2\n\t"
     16     "l.bf      lfeqd\n\t"
     17     "l.nop\n\t"
     18     "l.addi    %0, %0, 0x1\n\t"
     19     : "+r"(a)
     20     : "r"(b), "r"(c)
     21    );
     22    if (a != result) {
     23        printf("lf.sfeq.s error\n");
     24        return -1;
     25    }
     26
     27    b = 13.5;
     28    c = 13.5;
     29    result = 0x3;
     30    __asm
     31    ("lf.sfeq.s %1, %2\n\t"
     32     "l.bf      1f\n\t"
     33     "l.nop\n\t"
     34     "l.addi    r4, r4, 0x1\n\t"
     35     "1:\n\t"
     36     : "+r"(a)
     37     : "r"(b), "r"(c)
     38    );
     39    if (a != result) {
     40        printf("lf.sfeq.s error\n");
     41        return -1;
     42    }
     43
     44/*    double b, c;
     45    double result;
     46    int a;
     47
     48    a = 0x1;
     49    b = 122.5;
     50    c = 133.5;
     51    result = 0x3;
     52
     53    __asm
     54    ("lfeqd:\n\t"
     55     "l.addi %0, %0, 0x1\n\t"
     56     "lf.sfeq.d %1, %2\n\t"
     57     "l.bf      lfeqd\n\t"
     58     "l.nop\n\t"
     59     "l.addi    %0, %0, 0x1\n\t"
     60     : "+r"(a)
     61     : "r"(b), "r"(c)
     62    );
     63    if (a != result) {
     64        printf("lf.sfeq.d error\n");
     65        return -1;
     66    }
     67
     68    double c, d, res;
     69    int e = 0;
     70    c = 11.5;
     71    d = 11.5;
     72    res = 1;
     73    __asm
     74    ("lf.sfeq.d %1, %2\n\t"
     75     "l.bf      1f\n\t"
     76     "l.nop\n\t"
     77     "l.addi    %0, %0, 0x1\n\t"
     78     "1:\n\t"
     79     : "+r"(e)
     80     : "r"(c), "r"(d)
     81    );
     82    if (e != res) {
     83        printf("lf.sfeq.d error\n");
     84        return -1;
     85    }*/
     86
     87    return 0;
     88}