314 |
T1 = us->limit; |
T1 = us->limit; |
315 |
} |
} |
316 |
|
|
317 |
|
void OPPROTO |
318 |
|
invlpg_a0 (void) |
319 |
|
{ |
320 |
|
mtcache_flush_addr (&mtcache_data_read, A0); |
321 |
|
mtcache_flush_addr (&mtcache_data_write, A0); |
322 |
|
} |
323 |
|
|
324 |
/* Write program counter value back to register file. */ |
/* Write program counter value back to register file. */ |
325 |
|
|
326 |
void OPPROTO |
void OPPROTO |
1303 |
cc |= ((mode) CC_DST == 0) << 6; \ |
cc |= ((mode) CC_DST == 0) << 6; \ |
1304 |
cc |= lshift (CC_DST, 8 - bits) & 0x80; \ |
cc |= lshift (CC_DST, 8 - bits) & 0x80; \ |
1305 |
cc |= lshift ((src1 ^ src2 ^ -1) & (src1 ^ CC_DST), 12 - bits) & CC_O;\ |
cc |= lshift ((src1 ^ src2 ^ -1) & (src1 ^ CC_DST), 12 - bits) & CC_O;\ |
1306 |
return cc; \ |
return (cc & EFL_CC); \ |
1307 |
} \ |
} \ |
1308 |
static UWI XCONCAT2(compute_c_add, name) (void) \ |
static UWI XCONCAT2(compute_c_add, name) (void) \ |
1309 |
{ \ |
{ \ |
1320 |
cc |= ((U##mode) CC_DST == 0) << 6; \ |
cc |= ((U##mode) CC_DST == 0) << 6; \ |
1321 |
cc |= lshift (CC_DST, 8 - bits) & 0x80; \ |
cc |= lshift (CC_DST, 8 - bits) & 0x80; \ |
1322 |
cc |= lshift ((src1 ^ src2 ^ -1) & (src1 ^ CC_DST), 12 - bits) & CC_O;\ |
cc |= lshift ((src1 ^ src2 ^ -1) & (src1 ^ CC_DST), 12 - bits) & CC_O;\ |
1323 |
return cc; \ |
return (cc & EFL_CC); \ |
1324 |
} \ |
} \ |
1325 |
static UWI XCONCAT2(compute_c_adc, name) (void) \ |
static UWI XCONCAT2(compute_c_adc, name) (void) \ |
1326 |
{ \ |
{ \ |
1337 |
cc |= ((U##mode) CC_DST == 0) << 6; \ |
cc |= ((U##mode) CC_DST == 0) << 6; \ |
1338 |
cc |= lshift (CC_DST, 8 - bits) & 0x80; \ |
cc |= lshift (CC_DST, 8 - bits) & 0x80; \ |
1339 |
cc |= lshift ((src1 ^ src2) & (src1 ^ CC_DST), 12 - bits) & CC_O; \ |
cc |= lshift ((src1 ^ src2) & (src1 ^ CC_DST), 12 - bits) & CC_O; \ |
1340 |
return cc; \ |
return (cc & EFL_CC); \ |
1341 |
} \ |
} \ |
1342 |
static UWI XCONCAT2(compute_c_sub, name) (void) \ |
static UWI XCONCAT2(compute_c_sub, name) (void) \ |
1343 |
{ \ |
{ \ |
1354 |
cc |= ((U##mode) CC_DST == 0) << 6; \ |
cc |= ((U##mode) CC_DST == 0) << 6; \ |
1355 |
cc |= lshift (CC_DST, 8 - bits) & 0x80; \ |
cc |= lshift (CC_DST, 8 - bits) & 0x80; \ |
1356 |
cc |= lshift ((src1 ^ src2) & (src1 ^ CC_DST), 12 - bits) & CC_O; \ |
cc |= lshift ((src1 ^ src2) & (src1 ^ CC_DST), 12 - bits) & CC_O; \ |
1357 |
return cc; \ |
return (cc & EFL_CC); \ |
1358 |
} \ |
} \ |
1359 |
static UWI XCONCAT2(compute_c_sbb, name) (void) \ |
static UWI XCONCAT2(compute_c_sbb, name) (void) \ |
1360 |
{ \ |
{ \ |
1367 |
cc |= paritytable[(UQI)CC_DST]; \ |
cc |= paritytable[(UQI)CC_DST]; \ |
1368 |
cc |= ((U##mode) CC_DST == 0) << 6; \ |
cc |= ((U##mode) CC_DST == 0) << 6; \ |
1369 |
cc |= lshift (CC_DST, 8 - bits) & 0x80; \ |
cc |= lshift (CC_DST, 8 - bits) & 0x80; \ |
1370 |
return cc; \ |
return (cc & EFL_CC); \ |
1371 |
} \ |
} \ |
1372 |
static UWI XCONCAT2(compute_c_log, name) (void) \ |
static UWI XCONCAT2(compute_c_log, name) (void) \ |
1373 |
{ \ |
{ \ |
1383 |
cc |= lshift (CC_DST, 8 - bits) & 0x80; \ |
cc |= lshift (CC_DST, 8 - bits) & 0x80; \ |
1384 |
/* of is defined if shift count == 1 */ \ |
/* of is defined if shift count == 1 */ \ |
1385 |
cc |= lshift (CC_SRC ^ CC_DST, 12 - bits) & CC_O; \ |
cc |= lshift (CC_SRC ^ CC_DST, 12 - bits) & CC_O; \ |
1386 |
return cc; \ |
return (cc & EFL_CC); \ |
1387 |
} \ |
} \ |
1388 |
static UWI XCONCAT2(compute_c_shl, name) (void) \ |
static UWI XCONCAT2(compute_c_shl, name) (void) \ |
1389 |
{ \ |
{ \ |
1399 |
cc |= lshift (CC_DST, 8 - bits) & 0x80; \ |
cc |= lshift (CC_DST, 8 - bits) & 0x80; \ |
1400 |
/* of is defined if shift count == 1 */ \ |
/* of is defined if shift count == 1 */ \ |
1401 |
cc |= lshift (CC_SRC ^ CC_DST, 12 - bits) & CC_O; \ |
cc |= lshift (CC_SRC ^ CC_DST, 12 - bits) & CC_O; \ |
1402 |
return cc; \ |
return (cc & EFL_CC); \ |
1403 |
} \ |
} \ |
1404 |
static UWI XCONCAT2(compute_all_inc, name) (void) \ |
static UWI XCONCAT2(compute_all_inc, name) (void) \ |
1405 |
{ \ |
{ \ |
1411 |
cc |= ((U##mode) CC_DST == 0) << 6; \ |
cc |= ((U##mode) CC_DST == 0) << 6; \ |
1412 |
cc |= lshift (CC_DST, 8 - bits) & 0x80; \ |
cc |= lshift (CC_DST, 8 - bits) & 0x80; \ |
1413 |
cc |= ((CC_DST & mask) == (1 << (bits - 1))) << 11; \ |
cc |= ((CC_DST & mask) == (1 << (bits - 1))) << 11; \ |
1414 |
return cc; \ |
return (cc & EFL_CC); \ |
1415 |
} \ |
} \ |
1416 |
static UWI XCONCAT2(compute_c_inc, name) (void) \ |
static UWI XCONCAT2(compute_c_inc, name) (void) \ |
1417 |
{ \ |
{ \ |
2010 |
i386_cpuid (current_cpu); |
i386_cpuid (current_cpu); |
2011 |
} |
} |
2012 |
|
|
2013 |
|
void OPPROTO |
2014 |
|
rdts (void) |
2015 |
|
{ |
2016 |
|
i386_rdts (current_cpu); |
2017 |
|
} |
2018 |
|
|
2019 |
/* Input/output related micro-ops */ |
/* Input/output related micro-ops */ |
2020 |
|
|
2021 |
/* Port number in t0, value in t1. */ |
/* Port number in t0, value in t1. */ |