- Update romcc so that it more successfully spills registers to the xmm registers

- Add several more test cases.
- Bump the version number to .32


git-svn-id: svn://svn.coreboot.org/coreboot/trunk@919 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Eric Biederman
2003-06-28 06:49:45 +00:00
parent db59928fd9
commit d1ea53995c
7 changed files with 872 additions and 628 deletions

View File

@@ -0,0 +1,14 @@
static void main(void)
{
unsigned long a,b,c, d;
volatile unsigned long *val = (volatile unsigned long *)0x1234;
a = val[0];
b = val[1];
c = a*b;
val[2] = c;
d = val[3];
a = c / d;
b = c % d;
val[4] = a;
val[5] = b;
}

View File

@@ -0,0 +1,47 @@
static void spd_set_memclk(void)
{
unsigned min;
unsigned device;
min = 0x250;
for(device = 0x80; device <= 0x81; device += 1)
{
unsigned cur;
int latency;
unsigned long loops;
cur = 5 | 0xa0;
latency = __builtin_inw(0xab);
if (latency > 0x250) {
loops = 1000000;
while(--loops)
;
if (!loops) {
goto end;
}
loops = 1000000;
while(--loops)
;
end:
;
}
loops = 1000000;
while(--loops)
;
if (latency > 0x250) {
;
}
if (cur > 0x250) {
}
}
}

View File

@@ -0,0 +1,41 @@
static void spd_set_memclk(void)
{
unsigned min_cycle_time;
unsigned device;
int new_cycle_time, new_latency;
int index;
int latency;
min_cycle_time = 0x50;
device = 0x50;
new_cycle_time = 0xa0;
new_latency = 5;
latency = 0;
for(index = 0; index < 3; index++, latency++) {
unsigned long loops;
loops = 1000000;
do {
unsigned short val;
val = __builtin_inw(0x10e0);
} while(--loops);
if (!loops) {
continue;
}
__builtin_outb(device, 0xe4);
__builtin_outb(index, 0xe8);
loops = 1000000;
while(--loops)
;
}
if (new_latency > 4){
return;
}
if (new_cycle_time > min_cycle_time) {
min_cycle_time = new_cycle_time;
}
}

View File

@@ -0,0 +1,41 @@
static void spd_set_memclk(void)
{
static const int indicies[] = { 26, 23, 9 };
int new_cycle_time, new_latency;
int index;
unsigned min_cycle_time, min_latency;
unsigned device;
min_cycle_time = 0x50;
min_latency = 2;
device = 0x50;
new_cycle_time = 0xa0;
new_latency = 5;
for(index = 0; index < 3; index++) {
unsigned long loops;
unsigned long address;
address = indicies[index];
loops = 1000000;
do {
} while(--loops);
if (loops < 0) {
continue;
}
__builtin_outb(device, 0x10e4);
__builtin_outb(address, 0x10e8);
loops = 1000000;
if ((loops?0:-1) < 0) {
continue;
}
}
if (new_cycle_time > min_cycle_time) {
min_cycle_time = new_cycle_time;
}
if (new_latency > min_latency) {
min_latency = new_latency;
}
}

View File

@@ -0,0 +1,43 @@
static void spd_set_memclk(void)
{
unsigned min_cycle_time, min_latency;
unsigned device;
int new_cycle_time, new_latency;
int index;
int latency;
min_cycle_time = 0x50;
min_latency = 2;
device = 0x50;
new_latency = 5;
new_cycle_time = 0xa0;
latency = 23;
for(index = 0; index < 3; index++, latency++) {
unsigned long loops;
unsigned address = index;
loops = 1000000;
do {
} while(--loops);
if (loops) {
continue;
}
__builtin_outb(device, 0x10e4);
__builtin_outb(address & 0xFF, 0x10e8);
loops = 1000000;
while(--loops)
;
}
if (new_cycle_time > min_cycle_time) {
min_cycle_time = new_cycle_time;
}
if (new_latency > min_latency) {
min_latency = new_latency;
}
}