- Moved 2 of the test cases into tests for failure
- Reworked the transformation into ssa form and now I catch all unitialized variable uses. - Several more test cases - Bumped the version to 0.34 - Verified that -O2 the scc_transform now works. git-svn-id: svn://svn.coreboot.org/coreboot/trunk@934 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
18
util/romcc/tests/fail_test2.c
Normal file
18
util/romcc/tests/fail_test2.c
Normal file
@@ -0,0 +1,18 @@
|
||||
static void main(void)
|
||||
{
|
||||
|
||||
unsigned min;
|
||||
int value, latency;
|
||||
|
||||
|
||||
latency = -2;
|
||||
|
||||
if (latency > (((min) >> 8) & 0xff)) {
|
||||
value = 0xa;
|
||||
}
|
||||
|
||||
if (value < 0) return;
|
||||
|
||||
((min) = (((min) & ~0xff)));
|
||||
|
||||
}
|
10
util/romcc/tests/fail_test3.c
Normal file
10
util/romcc/tests/fail_test3.c
Normal file
@@ -0,0 +1,10 @@
|
||||
static void main(void)
|
||||
{
|
||||
volatile unsigned long *val = (volatile unsigned long *)0x1234;
|
||||
int i;
|
||||
if (val[0] > 25) {
|
||||
i = 7;
|
||||
}
|
||||
val[1] = i;
|
||||
|
||||
}
|
24
util/romcc/tests/simple_test55.c
Normal file
24
util/romcc/tests/simple_test55.c
Normal file
@@ -0,0 +1,24 @@
|
||||
static void main(void)
|
||||
{
|
||||
static const int sdivisor = 20;
|
||||
const int *pdivisor;
|
||||
unsigned rdpreamble;
|
||||
unsigned divisor;
|
||||
pdivisor = &sdivisor;
|
||||
divisor = *pdivisor;
|
||||
rdpreamble = 0;
|
||||
|
||||
if (divisor == 20) {
|
||||
rdpreamble = 18;
|
||||
}
|
||||
else {
|
||||
if (divisor == 15) {
|
||||
rdpreamble = 16;
|
||||
}
|
||||
else {
|
||||
if (divisor == 12) {
|
||||
rdpreamble = 15;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
43
util/romcc/tests/simple_test56.c
Normal file
43
util/romcc/tests/simple_test56.c
Normal file
@@ -0,0 +1,43 @@
|
||||
|
||||
static void spd_enable_refresh(void)
|
||||
{
|
||||
/*
|
||||
* Effects: Uses serial presence detect to set the
|
||||
* refresh rate in the DRAMC register.
|
||||
* see spd_set_dramc for the other values.
|
||||
* FIXME: Check for illegal/unsupported ram configurations and abort
|
||||
*/
|
||||
static const unsigned char refresh_rates[] = {
|
||||
0x01, /* Normal 15.625 us -> 15.6 us */
|
||||
0x05, /* Reduced(.25X) 3.9 us -> 7.8 us */
|
||||
0x05, /* Reduced(.5X) 7.8 us -> 7.8 us */
|
||||
0x02, /* Extended(2x) 31.3 us -> 31.2 us */
|
||||
0x03, /* Extended(4x) 62.5 us -> 62.4 us */
|
||||
0x04, /* Extended(8x) 125 us -> 124.8 us */
|
||||
};
|
||||
/* Find the first dimm and assume the rest are the same */
|
||||
int byte;
|
||||
unsigned device;
|
||||
unsigned refresh_rate;
|
||||
byte = -1;
|
||||
device = 0x50;
|
||||
while ((byte < 0) && (device <= 0x57)) {
|
||||
byte = __builtin_inl(device);
|
||||
device += 1;
|
||||
}
|
||||
if (byte < 0) {
|
||||
/* We couldn't find anything we must have no memory */
|
||||
while(1);
|
||||
}
|
||||
byte &= 0x7f;
|
||||
/* Default refresh rate be conservative */
|
||||
refresh_rate = 5;
|
||||
/* see if the ram refresh is a supported one */
|
||||
if (byte < 6) {
|
||||
refresh_rate = refresh_rates[byte];
|
||||
}
|
||||
byte = __builtin_inb(0x57);
|
||||
byte &= 0xf8;
|
||||
byte |= refresh_rate;
|
||||
__builtin_outb(byte, 0x57);
|
||||
}
|
Reference in New Issue
Block a user