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.

616 lines
6.1 KiB

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