ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/SheepShaver/src/rom_patches.cpp
(Generate patch)

Comparing SheepShaver/src/rom_patches.cpp (file contents):
Revision 1.13 by gbeauche, 2003-10-05T23:49:19Z vs.
Revision 1.17 by gbeauche, 2003-10-07T19:28:09Z

# Line 58 | Line 58
58  
59  
60   // Other ROM addresses
61 < const uint32 CHECK_LOAD_PATCH_SPACE = 0x2f7f00;
62 < const uint32 PUT_SCRAP_PATCH_SPACE = 0x2f7f80;
63 < const uint32 GET_SCRAP_PATCH_SPACE = 0x2f7fc0;
64 < const uint32 ADDR_MAP_PATCH_SPACE = 0x2f8000;
61 > const uint32 CHECK_LOAD_PATCH_SPACE = 0x2fcf00;
62 > const uint32 PUT_SCRAP_PATCH_SPACE = 0x2fcf80;
63 > const uint32 GET_SCRAP_PATCH_SPACE = 0x2fcfc0;
64 > const uint32 ADDR_MAP_PATCH_SPACE = 0x2fd000;
65  
66   // Global variables
67   int ROMType;                            // ROM type
# Line 131 | Line 131 | void decode_parcels(const uint8 *src, ui
131                            (parcel_type >> 8) & 0xff, parcel_type & 0xff, &parcel_data[6]));
132                  if (parcel_type == FOURCC('r','o','m',' ')) {
133                          uint32 lzss_offset  = ntohl(parcel_data[2]);
134 <                        uint32 lzss_size = ((uint32)src + parcel_offset) - ((uint32)parcel_data + lzss_offset);
134 >                        uint32 lzss_size = ((uintptr)src + next_offset) - ((uintptr)parcel_data + lzss_offset);
135                          decode_lzss((uint8 *)parcel_data + lzss_offset, dest, lzss_size);
136                  }
137                  parcel_offset = next_offset;
# Line 725 | Line 725 | bool PatchROM(void)
725          else
726                  return false;
727  
728 +        // Check that other ROM addresses point to really free regions
729 +        if (ntohl(*(uint32 *)(ROM_BASE + CHECK_LOAD_PATCH_SPACE)) != 0x6b636b63)
730 +                return false;
731 +        if (ntohl(*(uint32 *)(ROM_BASE + PUT_SCRAP_PATCH_SPACE)) != 0x6b636b63)
732 +                return false;
733 +        if (ntohl(*(uint32 *)(ROM_BASE + GET_SCRAP_PATCH_SPACE)) != 0x6b636b63)
734 +                return false;
735 +        if (ntohl(*(uint32 *)(ROM_BASE + ADDR_MAP_PATCH_SPACE)) != 0x6b636b63)
736 +                return false;
737 +
738          // Apply patches
739          if (!patch_nanokernel_boot()) return false;
740          if (!patch_68k_emul()) return false;
# Line 2230 | Line 2240 | void InstallDrivers(void)
2240          uint8 pb[SIZEOF_IOParam];
2241  
2242          // Install floppy driver
2243 <        if (ROMType == ROMTYPE_NEWWORLD) {
2243 >        if (ROMType == ROMTYPE_NEWWORLD || ROMType == ROMTYPE_GOSSAMER) {
2244  
2245 <                // Force installation of floppy driver with NewWorld ROMs
2245 >                // Force installation of floppy driver with NewWorld and Gossamer ROMs
2246                  r.a[0] = ROM_BASE + sony_offset;
2247                  r.d[0] = (uint32)SonyRefNum;
2248                  Execute68kTrap(0xa43d, &r);             // DrvrInstallRsrvMem()

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines