#define CMOS_FLOPPY_DRIVE_TYPE 0x10
#define CMOS_DISK_DATA 0x12
#define CMOS_EQUIPMENT_INFO 0x14
+#define CMOS_MEM_BASE_LOW 0x17
+#define CMOS_MEM_BASE_HIGH 0x18
#define CMOS_DISK_DRIVE1_TYPE 0x19
#define CMOS_DISK_DRIVE2_TYPE 0x1a
#define CMOS_DISK_DRIVE1_CYL 0x1b
#define CMOS_DISK_DRIVE2_CYL 0x24
#define CMOS_BIOS_CONFIG 0x2d
-#define CMOS_EXTMEM_LOW 0x30
-#define CMOS_EXTMEM_HIGH 0x31
+#define CMOS_MEM_EXTMEM_LOW 0x30
+#define CMOS_MEM_EXTMEM_HIGH 0x31
#define CMOS_CENTURY 0x32
-#define CMOS_EXTMEM2_LOW 0x34
-#define CMOS_EXTMEM2_HIGH 0x35
+#define CMOS_MEM_EXTMEM2_LOW 0x34
+#define CMOS_MEM_EXTMEM2_HIGH 0x35
#define CMOS_BIOS_BOOTFLAG1 0x38
#define CMOS_BIOS_DISKTRANSFLAG 0x39
#define CMOS_BIOS_BOOTFLAG2 0x3d
static void
ram_probe(void)
{
- if (inb_cmos(0x34) | inb_cmos(0x35))
- ram_size = (inb_cmos(0x34) | (inb_cmos(0x35) << 8)) * 65536 +
- 16 * 1024 * 1024;
+ if (inb_cmos(CMOS_MEM_EXTMEM2_LOW) | inb_cmos(CMOS_MEM_EXTMEM2_HIGH))
+ ram_size = (inb_cmos(CMOS_MEM_EXTMEM2_LOW) | (inb_cmos(CMOS_MEM_EXTMEM2_HIGH) << 8)) *
+ 64 * 1024 + 16 * 1024 * 1024;
else
- ram_size = (inb_cmos(0x17) | (inb_cmos(0x18) << 8)) * 1024;
+ ram_size = (inb_cmos(CMOS_MEM_BASE_LOW) | (inb_cmos(CMOS_MEM_BASE_HIGH) << 8)) * 1024;
#ifdef CONFIG_USE_EBDA_TABLES
ebda_cur_addr = ((*(u16 *)(0x40e)) << 4) + 0x380;
#endif
static void
handle_1588(struct bregs *regs)
{
- regs->al = inb_cmos(CMOS_EXTMEM_LOW);
- regs->ah = inb_cmos(CMOS_EXTMEM_HIGH);
+ regs->al = inb_cmos(CMOS_MEM_EXTMEM_LOW);
+ regs->ah = inb_cmos(CMOS_MEM_EXTMEM_HIGH);
// According to Ralf Brown's interrupt the limit should be 15M,
// but real machines mostly return max. 63M.
if (regs->ax > 0xffc0)
// regs.u.r16.bx = 0;
// Get the amount of extended memory (above 1M)
- regs->cl = inb_cmos(CMOS_EXTMEM_LOW);
- regs->ch = inb_cmos(CMOS_EXTMEM_HIGH);
+ regs->cl = inb_cmos(CMOS_MEM_EXTMEM_LOW);
+ regs->ch = inb_cmos(CMOS_MEM_EXTMEM_HIGH);
// limit to 15M
if (regs->cx > 0x3c00)
regs->cx = 0x3c00;
// Get the amount of extended memory above 16M in 64k blocs
- regs->dl = inb_cmos(CMOS_EXTMEM2_LOW);
- regs->dh = inb_cmos(CMOS_EXTMEM2_HIGH);
+ regs->dl = inb_cmos(CMOS_MEM_EXTMEM2_LOW);
+ regs->dh = inb_cmos(CMOS_MEM_EXTMEM2_HIGH);
// Set configured memory equal to extended memory
regs->ax = regs->cx;
return;
}
- u32 extended_memory_size = inb_cmos(CMOS_EXTMEM2_HIGH);
+ u32 extended_memory_size = inb_cmos(CMOS_MEM_EXTMEM2_HIGH);
extended_memory_size <<= 8;
- extended_memory_size |= inb_cmos(CMOS_EXTMEM2_LOW);
+ extended_memory_size |= inb_cmos(CMOS_MEM_EXTMEM2_LOW);
extended_memory_size *= 64;
// greater than EFF00000???
if (extended_memory_size > 0x3bc000)
extended_memory_size += (16L * 1024 * 1024);
if (extended_memory_size <= (16L * 1024 * 1024)) {
- extended_memory_size = inb_cmos(CMOS_EXTMEM_HIGH);
+ extended_memory_size = inb_cmos(CMOS_MEM_EXTMEM_HIGH);
extended_memory_size <<= 8;
- extended_memory_size |= inb_cmos(CMOS_EXTMEM_LOW);
+ extended_memory_size |= inb_cmos(CMOS_MEM_EXTMEM_LOW);
extended_memory_size *= 1024;
}