diff options
Diffstat (limited to 'util/romcc/tests/simple_test2.c')
-rw-r--r-- | util/romcc/tests/simple_test2.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/util/romcc/tests/simple_test2.c b/util/romcc/tests/simple_test2.c new file mode 100644 index 0000000000..aef936a8ff --- /dev/null +++ b/util/romcc/tests/simple_test2.c @@ -0,0 +1,36 @@ +void outl(unsigned int value, unsigned short port) +{ + __builtin_outl(value, port); +} + +#define PIIX4_DEVFN 0x90 +#define SMBUS_MEM_DEVICE_START 0x50 +#define SMBUS_MEM_DEVICE_END 0x53 +#define SMBUS_MEM_DEVICE_INC 1 + + +static void spd_set_drb(void) +{ + /* + * Effects: Uses serial presence detect to set the + * DRB registers which holds the ending memory address assigned + * to each DIMM. + */ + unsigned end_of_memory; + unsigned device; + + end_of_memory = 0; /* in multiples of 8MiB */ + device = SMBUS_MEM_DEVICE_START; + while (device <= SMBUS_MEM_DEVICE_END) { + unsigned side1_bits; + + side1_bits = -1; + + /* Compute the end address for the DRB register */ + /* Only process dimms < 2GB (2^8 * 8MB) */ + if (side1_bits < 8) { + end_of_memory += (1 << side1_bits); + } + outl(end_of_memory, 0x1234); + } +} |