mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-11 09:56:29 +00:00
57 lines
879 B
C
57 lines
879 B
C
#include <stdio.h>
|
|
#include<stdlib.h>
|
|
#include<unistd.h>
|
|
|
|
union stcke {
|
|
unsigned long buffer[2];
|
|
struct reader {
|
|
char pad;
|
|
unsigned long long time;
|
|
int time2;
|
|
short program;
|
|
} __attribute__ ((packed)) reader;
|
|
};
|
|
|
|
int stcke(unsigned long *addr)
|
|
{
|
|
|
|
int cc;
|
|
asm volatile ( "stcke %0\n"
|
|
"ipm %1\n"
|
|
"srl %1, 28\n"
|
|
:"+Q" (*addr), "=d"(cc)::"cc");
|
|
|
|
return cc;
|
|
}
|
|
|
|
unsigned long clockticks_in_msec(unsigned long b, unsigned long a)
|
|
{
|
|
return (b -a ) / 4096000UL;
|
|
}
|
|
|
|
int main()
|
|
{
|
|
union stcke start, end;
|
|
int cc;
|
|
|
|
cc = stcke(start.buffer);
|
|
if (cc)
|
|
printf("cc != 0!\n");
|
|
|
|
sleep(1);
|
|
cc = stcke(end.buffer);
|
|
if (cc)
|
|
printf("cc != 0!\n");
|
|
|
|
unsigned long c = clockticks_in_msec(end.reader.time,
|
|
start.reader.time);
|
|
|
|
if (c >= 1000 && c < 1500)
|
|
printf("OK.....Testcase passed\n");
|
|
else
|
|
printf("FAILED.....Testcase failed\n");
|
|
|
|
return 0;
|
|
|
|
}
|