Revision 89fc88da

b/target-mips/helper.c
131 131
            ret = env->tlb->map_address(env, physical, prot, address, rw, access_type);
132 132
        }
133 133
#if defined(TARGET_MIPSN32) || defined(TARGET_MIPS64)
134
/*
135
   XXX: Assuming :
136
   - PABITS = 36 (correct for MIPS64R1)
137
*/
138
    } else if (address < 0x3FFFFFFFFFFFFFFFULL) {
134
    } else if (address < 0x4000000000000000ULL) {
139 135
        /* xuseg */
140 136
	if (UX && address < (0x3FFFFFFFFFFFFFFFULL & env->SEGMask)) {
141 137
            ret = env->tlb->map_address(env, physical, prot, address, rw, access_type);
142 138
	} else {
143 139
	    ret = TLBRET_BADADDR;
144 140
        }
145
    } else if (address < 0x7FFFFFFFFFFFFFFFULL) {
141
    } else if (address < 0x8000000000000000ULL) {
146 142
        /* xsseg */
147 143
	if ((supervisor_mode || kernel_mode) &&
148 144
	    SX && address < (0x7FFFFFFFFFFFFFFFULL & env->SEGMask)) {
......
150 146
	} else {
151 147
	    ret = TLBRET_BADADDR;
152 148
        }
153
    } else if (address < 0xBFFFFFFFFFFFFFFFULL) {
149
    } else if (address < 0xC000000000000000ULL) {
154 150
        /* xkphys */
151
        /* XXX: Assumes PABITS = 36 (correct for MIPS64R1) */
155 152
        if (kernel_mode && KX &&
156
            (address & 0x07FFFFFFFFFFFFFFULL) < 0X0000000FFFFFFFFFULL) {
157
            *physical = address & 0X0000000FFFFFFFFFULL;
153
            (address & 0x07FFFFFFFFFFFFFFULL) < 0x0000000FFFFFFFFFULL) {
154
            *physical = address & 0x0000000FFFFFFFFFULL;
158 155
            *prot = PAGE_READ | PAGE_WRITE;
159 156
	} else {
160 157
	    ret = TLBRET_BADADDR;
161 158
	}
162
    } else if (address < 0xFFFFFFFF7FFFFFFFULL) {
159
    } else if (address < 0xFFFFFFFF80000000ULL) {
163 160
        /* xkseg */
164 161
	if (kernel_mode && KX &&
165 162
	    address < (0xFFFFFFFF7FFFFFFFULL & env->SEGMask)) {
......
185 182
            ret = TLBRET_BADADDR;
186 183
        }
187 184
    } else if (address < (int32_t)0xE0000000UL) {
188
        /* sseg */
185
        /* sseg (kseg2) */
189 186
        if (supervisor_mode || kernel_mode) {
190 187
            ret = env->tlb->map_address(env, physical, prot, address, rw, access_type);
191 188
        } else {

Also available in: Unified diff