示例#1
0
 public static void setMEM2Upper(UInt32 upper)
 {
     ValidAreas[1] = new AddressRange(AddressType.UncachedMem2, 0x90000000, upper);
 }
示例#2
0
        public static void setDataUpper(TCPGecko upper)
        {
            UInt32 mem;
            switch (upper.OsVersionRequest())
            {
                case 400:
                case 410:
                    mem = upper.peek_kern(0xffe8619c);
                    break;
                case 500:
                case 510:
                    return;
                    // TODO: This doesn't work for some reason - crashes on connection?
                    //mem = upper.peek_kern(0xffe8591c);
                    //break;
                default:
                    return;
            }
            UInt32 tbl = upper.peek_kern(mem + 4);
            UInt32 lst = upper.peek_kern(tbl + 20);

            UInt32 init_start = upper.peek_kern(lst + 0 + 0x00);
            UInt32 init_len   = upper.peek_kern(lst + 4 + 0x00);
            UInt32 code_start = upper.peek_kern(lst + 0 + 0x10);
            UInt32 code_len   = upper.peek_kern(lst + 4 + 0x10);
            UInt32 data_start = upper.peek_kern(lst + 0 + 0x20);
            UInt32 data_len   = upper.peek_kern(lst + 4 + 0x20);
            ValidAreas[0] = new AddressRange(AddressType.Ex, init_start, init_start + init_len);
            ValidAreas[1] = new AddressRange(AddressType.Ex, code_start, code_start + code_len);
            ValidAreas[2] = new AddressRange(AddressType.Rw, data_start, data_start + data_len);
        }
示例#3
0
 public static void setMEM2Upper(UInt32 upper)
 {
     ValidAreas[1] = new AddressRange(AddressType.UncachedMem2, 0x90000000, upper);
 }