Commit 40b6ecc6bcfcf38f1d488d58c8407cce0b82b6d1
1 parent
f3ff649d
no need to use LARGE translation
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1120 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
7 additions
and
7 deletions
hw/pc.c
@@ -215,25 +215,25 @@ static void cmos_init(int ram_size, int boot_device, BlockDriverState **hd_table | @@ -215,25 +215,25 @@ static void cmos_init(int ram_size, int boot_device, BlockDriverState **hd_table | ||
215 | cmos_init_hd(0x1a, 0x24, hd_table[1]); | 215 | cmos_init_hd(0x1a, 0x24, hd_table[1]); |
216 | 216 | ||
217 | val = 0; | 217 | val = 0; |
218 | - for (i = 0; i < 4; i++) | 218 | + for (i = 0; i < 4; i++) { |
219 | if (hd_table[i]) { | 219 | if (hd_table[i]) { |
220 | int cylinders, heads, sectors; | 220 | int cylinders, heads, sectors; |
221 | uint8_t translation; | 221 | uint8_t translation; |
222 | - | 222 | + /* NOTE: bdrv_get_geometry_hint() returns the geometry |
223 | + that the hard disk returns. It is always such that: 1 <= | ||
224 | + sects <= 63, 1 <= heads <= 16, 1 <= cylinders <= | ||
225 | + 16383. The BIOS geometry can be different. */ | ||
223 | bdrv_get_geometry_hint(hd_table[i], &cylinders, &heads, §ors); | 226 | bdrv_get_geometry_hint(hd_table[i], &cylinders, &heads, §ors); |
224 | if (cylinders <= 1024 && heads <= 16 && sectors <= 63) { | 227 | if (cylinders <= 1024 && heads <= 16 && sectors <= 63) { |
225 | /* No translation. */ | 228 | /* No translation. */ |
226 | translation = 0; | 229 | translation = 0; |
227 | - } else if (cylinders * heads > 131072) { | 230 | + } else { |
228 | /* LBA translation. */ | 231 | /* LBA translation. */ |
229 | translation = 1; | 232 | translation = 1; |
230 | - } else { | ||
231 | - /* LARGE translation. */ | ||
232 | - translation = 2; | ||
233 | } | 233 | } |
234 | - | ||
235 | val |= translation << (i * 2); | 234 | val |= translation << (i * 2); |
236 | } | 235 | } |
236 | + } | ||
237 | rtc_set_memory(s, 0x39, val); | 237 | rtc_set_memory(s, 0x39, val); |
238 | 238 | ||
239 | /* Disable check of 0x55AA signature on the last two bytes of | 239 | /* Disable check of 0x55AA signature on the last two bytes of |