Method (OSFL, 0, NotSerialized) { If (LNotEqual (OSVR, Ones)) { Return (OSVR) }

If (LEqual (PICM, Zero)) { Store (0xAC, DBG8) }

Store (One, OSVR)

If (CondRefOf (_OSI, Local1))

{ If (_OSI ("Windows 2000")) { Store (0x04, OSVR) }

If (_OSI ("Windows 2001")) { Store (Zero, OSVR) } If (_OSI ("Windows 2001 SP1")) { Store (Zero, OSVR) } If (_OSI ("Windows 2001 SP2")) { Store (Zero, OSVR) } If (_OSI ("Windows 2001.1")) { Store (Zero, OSVR) } If (_OSI ("Windows 2001.1 SP1")) { Store (Zero, OSVR) } If (_OSI ("Windows 2006")) { Store (Zero, OSVR) }

} Else {

If (MCTH (_OS, "Microsoft Windows NT")) { Store (0x04, OSVR) }

Else { If (MCTH (_OS, "Microsoft WindowsME: Millennium Edition")) { Store (0x02, OSVR) } If (MCTH (_OS, "Linux")) { Store (0x03, OSVR) }

} } Return (OSVR) }

Value OS 0 Windows XP, 2003 or Vista. Linux (assuming absence of bugs) 1 Unknown OS 2 Windows ME 3 A version of Linux that doesn't implement _OSI and is from before 2.6.9 4 Windows NT 4 and 2000. A version of Linux that doesn't implement _OSI and is 2.6.9 or later (I don't believe any such version exists

If (LEqual (OSFL (), Zero)) { Store (0x59, SMIC) } Else { If (LEqual (OSFL (), 0x04)) { Store (0x5A, SMIC) } Else { Store (0x58, SMIC) } }