Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

619 lines
6.2 KiB

  1. // Tables for DS: 32-bit instructions
  2. // (ie. no FS:, but DATA: specified)
  3. /*++
  4. Copyright (c) 1995 Microsoft Corporation
  5. Module Name:
  6. lds16tbl.c
  7. Abstract:
  8. Dispatch tables for instructions with DATA: override and the LOCK
  9. prefix. It is used for both DS: and FS: overrides.
  10. Author:
  11. 23-Aug-1995 Ori Gershony (t-orig)
  12. Revision History:
  13. --*/
  14. #include <nt.h>
  15. #include <ntrtl.h>
  16. #include <nturtl.h>
  17. #include <windows.h>
  18. #include <stdio.h>
  19. #include "threadst.h"
  20. #include "instr.h"
  21. #include "decoderp.h"
  22. #include "bytefns.h"
  23. #include "wordfns.h"
  24. #include "miscfns.h"
  25. #include "floatfns.h"
  26. pfnDispatchInstruction LockDispatch16[256] = {
  27. // 0
  28. LOCKadd_m_r8,
  29. LOCKadd_m_r16,
  30. LOCKadd_r_m8,
  31. LOCKadd_r_m16,
  32. bad,
  33. bad,
  34. bad,
  35. bad,
  36. // 8
  37. LOCKor_m_r8,
  38. LOCKor_m_r16,
  39. LOCKor_r_m8,
  40. LOCKor_r_m16,
  41. bad,
  42. bad,
  43. bad,
  44. LOCKdispatch216,
  45. // 10
  46. LOCKadc_m_r8,
  47. LOCKadc_m_r16,
  48. LOCKadc_r_m8,
  49. LOCKadc_r_m16,
  50. bad,
  51. bad,
  52. bad,
  53. bad,
  54. // 18
  55. LOCKsbb_m_r8,
  56. LOCKsbb_m_r16,
  57. LOCKsbb_r_m8,
  58. LOCKsbb_r_m16,
  59. bad,
  60. bad,
  61. bad,
  62. bad,
  63. // 20
  64. LOCKand_m_r8,
  65. LOCKand_m_r16,
  66. LOCKand_r_m8,
  67. LOCKand_r_m16,
  68. bad,
  69. bad,
  70. bad,
  71. bad,
  72. // 28
  73. LOCKsub_m_r8,
  74. LOCKsub_m_r16,
  75. LOCKsub_r_m8,
  76. LOCKsub_r_m16,
  77. bad,
  78. bad,
  79. bad,
  80. bad,
  81. // 30
  82. LOCKxor_m_r8,
  83. LOCKxor_m_r16,
  84. LOCKxor_r_m8,
  85. LOCKxor_r_m16,
  86. bad,
  87. bad,
  88. bad,
  89. bad,
  90. // 38
  91. bad,
  92. bad,
  93. bad,
  94. bad,
  95. bad,
  96. bad,
  97. bad,
  98. bad,
  99. // 40
  100. bad,
  101. bad,
  102. bad,
  103. bad,
  104. bad,
  105. bad,
  106. bad,
  107. bad,
  108. // 48
  109. bad,
  110. bad,
  111. bad,
  112. bad,
  113. bad,
  114. bad,
  115. bad,
  116. bad,
  117. // 50
  118. bad,
  119. bad,
  120. bad,
  121. bad,
  122. bad,
  123. bad,
  124. bad,
  125. bad,
  126. // 58
  127. bad,
  128. bad,
  129. bad,
  130. bad,
  131. bad,
  132. bad,
  133. bad,
  134. bad,
  135. // 60
  136. bad,
  137. bad,
  138. bad,
  139. bad,
  140. bad,
  141. bad,
  142. bad,
  143. bad,
  144. // 68
  145. bad,
  146. bad,
  147. bad,
  148. bad,
  149. bad,
  150. bad,
  151. bad,
  152. bad,
  153. // 70
  154. bad,
  155. bad,
  156. bad,
  157. bad,
  158. bad,
  159. bad,
  160. bad,
  161. bad,
  162. // 78
  163. bad,
  164. bad,
  165. bad,
  166. bad,
  167. bad,
  168. bad,
  169. bad,
  170. bad,
  171. // 80
  172. LOCKGROUP_18,
  173. LOCKGROUP_116,
  174. bad,
  175. LOCKGROUP_1WS16,
  176. bad,
  177. bad,
  178. xchg_r_m8,
  179. xchg_r_m16,
  180. // 88
  181. bad,
  182. bad,
  183. bad,
  184. bad,
  185. bad,
  186. bad,
  187. bad,
  188. bad,
  189. // 90
  190. bad,
  191. bad,
  192. bad,
  193. bad,
  194. bad,
  195. bad,
  196. bad,
  197. bad,
  198. // 98
  199. bad,
  200. bad,
  201. bad,
  202. bad,
  203. bad,
  204. bad,
  205. bad,
  206. bad,
  207. // a0
  208. bad,
  209. bad,
  210. bad,
  211. bad,
  212. bad,
  213. bad,
  214. bad,
  215. bad,
  216. // a8
  217. bad,
  218. bad,
  219. bad,
  220. bad,
  221. bad,
  222. bad,
  223. bad,
  224. bad,
  225. // b0
  226. bad,
  227. bad,
  228. bad,
  229. bad,
  230. bad,
  231. bad,
  232. bad,
  233. bad,
  234. // b8
  235. bad,
  236. bad,
  237. bad,
  238. bad,
  239. bad,
  240. bad,
  241. bad,
  242. bad,
  243. // c0
  244. bad,
  245. bad,
  246. bad,
  247. bad,
  248. bad,
  249. bad,
  250. bad,
  251. bad,
  252. // c8
  253. bad,
  254. bad,
  255. bad,
  256. bad,
  257. bad,
  258. bad,
  259. bad,
  260. bad,
  261. // d0
  262. bad,
  263. bad,
  264. bad,
  265. bad,
  266. bad,
  267. bad,
  268. bad,
  269. bad,
  270. // d8
  271. bad,
  272. bad,
  273. bad,
  274. bad,
  275. bad,
  276. bad,
  277. bad,
  278. bad,
  279. // e0
  280. bad,
  281. bad,
  282. bad,
  283. bad,
  284. bad,
  285. bad,
  286. bad,
  287. bad,
  288. // e8
  289. bad,
  290. bad,
  291. bad,
  292. bad,
  293. bad,
  294. bad,
  295. bad,
  296. bad,
  297. // f0
  298. bad,
  299. bad,
  300. bad,
  301. bad,
  302. bad,
  303. bad,
  304. LOCKGROUP_38,
  305. LOCKGROUP_316,
  306. // f8
  307. bad,
  308. bad,
  309. bad,
  310. bad,
  311. bad,
  312. bad,
  313. bad,
  314. LOCKGROUP_516,
  315. };
  316. pfnDispatchInstruction LockDispatch216[256] = {
  317. // 0
  318. bad,
  319. bad,
  320. bad,
  321. bad,
  322. bad,
  323. bad,
  324. bad,
  325. bad,
  326. // 8
  327. bad,
  328. bad,
  329. bad,
  330. bad,
  331. bad,
  332. bad,
  333. bad,
  334. bad,
  335. // 10
  336. bad,
  337. bad,
  338. bad,
  339. bad,
  340. bad,
  341. bad,
  342. bad,
  343. bad,
  344. // 18
  345. bad,
  346. bad,
  347. bad,
  348. bad,
  349. bad,
  350. bad,
  351. bad,
  352. bad,
  353. // 20
  354. bad,
  355. bad,
  356. bad,
  357. bad,
  358. bad,
  359. bad,
  360. bad,
  361. bad,
  362. // 28
  363. bad,
  364. bad,
  365. bad,
  366. bad,
  367. bad,
  368. bad,
  369. bad,
  370. bad,
  371. // 30
  372. bad,
  373. bad,
  374. bad,
  375. bad,
  376. bad,
  377. bad,
  378. bad,
  379. bad,
  380. // 38
  381. bad,
  382. bad,
  383. bad,
  384. bad,
  385. bad,
  386. bad,
  387. bad,
  388. bad,
  389. // 40
  390. bad,
  391. bad,
  392. bad,
  393. bad,
  394. bad,
  395. bad,
  396. bad,
  397. bad,
  398. // 48
  399. bad,
  400. bad,
  401. bad,
  402. bad,
  403. bad,
  404. bad,
  405. bad,
  406. bad,
  407. // 50
  408. bad,
  409. bad,
  410. bad,
  411. bad,
  412. bad,
  413. bad,
  414. bad,
  415. bad,
  416. // 58
  417. bad,
  418. bad,
  419. bad,
  420. bad,
  421. bad,
  422. bad,
  423. bad,
  424. bad,
  425. // 60
  426. bad,
  427. bad,
  428. bad,
  429. bad,
  430. bad,
  431. bad,
  432. bad,
  433. bad,
  434. // 68
  435. bad,
  436. bad,
  437. bad,
  438. bad,
  439. bad,
  440. bad,
  441. bad,
  442. bad,
  443. // 70
  444. bad,
  445. bad,
  446. bad,
  447. bad,
  448. bad,
  449. bad,
  450. bad,
  451. bad,
  452. // 78
  453. bad,
  454. bad,
  455. bad,
  456. bad,
  457. bad,
  458. bad,
  459. bad,
  460. bad,
  461. // 80
  462. bad,
  463. bad,
  464. bad,
  465. bad,
  466. bad,
  467. bad,
  468. bad,
  469. bad,
  470. // 88
  471. bad,
  472. bad,
  473. bad,
  474. bad,
  475. bad,
  476. bad,
  477. bad,
  478. bad,
  479. // 90
  480. bad,
  481. bad,
  482. bad,
  483. bad,
  484. bad,
  485. bad,
  486. bad,
  487. bad,
  488. // 98
  489. bad,
  490. bad,
  491. bad,
  492. bad,
  493. bad,
  494. bad,
  495. bad,
  496. bad,
  497. // a0
  498. bad,
  499. bad,
  500. bad,
  501. bad,
  502. bad,
  503. bad,
  504. bad,
  505. bad,
  506. // a8
  507. bad,
  508. bad,
  509. bad,
  510. LOCKbts_m_r16,
  511. bad,
  512. bad,
  513. bad,
  514. bad,
  515. // b0
  516. LOCKcmpxchg_m_r8,
  517. LOCKcmpxchg_m_r16,
  518. bad,
  519. LOCKbtr_m_r16,
  520. bad,
  521. bad,
  522. bad,
  523. bad,
  524. // b8
  525. bad,
  526. bad,
  527. LOCKGROUP_816,
  528. LOCKbtc_m_r16,
  529. bad,
  530. bad,
  531. bad,
  532. bad,
  533. // c0
  534. LOCKxadd_m_r8,
  535. LOCKxadd_m_r16,
  536. bad,
  537. bad,
  538. bad,
  539. bad,
  540. bad,
  541. bad,
  542. // c8
  543. bad,
  544. bad,
  545. bad,
  546. bad,
  547. bad,
  548. bad,
  549. bad,
  550. bad,
  551. // d0
  552. bad,
  553. bad,
  554. bad,
  555. bad,
  556. bad,
  557. bad,
  558. bad,
  559. bad,
  560. // d8
  561. bad,
  562. bad,
  563. bad,
  564. bad,
  565. bad,
  566. bad,
  567. bad,
  568. bad,
  569. // e0
  570. bad,
  571. bad,
  572. bad,
  573. bad,
  574. bad,
  575. bad,
  576. bad,
  577. bad,
  578. // e8
  579. bad,
  580. bad,
  581. bad,
  582. bad,
  583. bad,
  584. bad,
  585. bad,
  586. bad,
  587. // f0
  588. bad,
  589. bad,
  590. bad,
  591. bad,
  592. bad,
  593. bad,
  594. bad,
  595. bad,
  596. // f8
  597. bad,
  598. bad,
  599. bad,
  600. bad,
  601. bad,
  602. bad,
  603. bad,
  604. bad
  605. };