From: Hiroshi Miura <miura@da-cha.org>
To: sfr@canb.auug.org.au
Cc: linux-kernel@vger.kernel.org
Subject: APM work around for bad bios.
Date: Fri, 18 Oct 2002 02:21:55 +0900 (JST) [thread overview]
Message-ID: <20021017172155.BCA3F11782A@triton2> (raw)
Hello,
I use CASIO CASSIOPEIA FIVA 101 and 103. (http://www.da-cha.org/fiva/fiva.html)
this use Cyrix MediaGX and Award BIOS.
This APM BIOS report broken value for dseg_len.
it asumes granularity is 1.
I made a work around for this situation.
* if (cseg_len < bios.offset) BIOS report BAD len value.
-- segment length must be always larger than code offset
* if (dseg_len <= 0x40 ) BIOS asumes granularity =1.
-- 0x40 * 4kB = 64kB, my pc reports 0x40.
diff -urB -x .config -x '*.[oasS]' -x '*.in' -x '*.rej' -x '*.orig' linux-2.5.43-orig/arch/i386/kernel/apm.c linux-2.5.43/arch/i386/kernel/apm.c
--- linux-2.5.43-orig/arch/i386/kernel/apm.c 2002-10-12 13:21:05.000000000 +0900
+++ linux-2.5.43/arch/i386/kernel/apm.c 2002-10-14 21:36:14.000000000 +0900
@@ -1980,6 +2141,14 @@
(apm_info.bios.cseg_16_len - 1) & 0xffff);
_set_limit((char *)&cpu_gdt_table[i][APM_DS >> 3],
(apm_info.bios.dseg_len - 1) & 0xffff);
+ /* workaround for broken BIOSes */
+ if (apm_info.bios.cseg_len <= apm_info.bios.offset)
+ _set_limit((char *)&cpu_gdt_table[i][APM_CS >> 3], 64 * 1024 -1);
+ if (apm_info.bios.dseg_len <= 0x40) { /* 0x40 * 4kB == 64kB */
+ /* for the BIOS that assumes granularity = 1 */
+ cpu_gdt_table[i][APM_DS >> 3].b |= 0x800000;
+ printk(KERN_NOTICE "apm: we set the granularity of dseg.\n");
+ }
}
#endif
}
--
Hiroshi Miura --- http://www.da-cha.org/
NTTDATA Corp. Marketing & Business Strategy Planning Dept. --- miurahr@nttdata.co.jp
Key fingerprint = 9117 9407 5684 FBF1 4063 15B4 401D D077 04AB 8617
-- My hacking life is happy as the day is long
next reply other threads:[~2002-10-17 17:17 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-10-17 17:21 Hiroshi Miura [this message]
2002-10-21 9:08 ` APM work around for bad bios Pavel Machek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20021017172155.BCA3F11782A@triton2 \
--to=miura@da-cha.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sfr@canb.auug.org.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.