sig_cpu.inc 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618
  1. {$IFDEF FPC}
  2. {$PACKRECORDS C}
  3. {$ENDIF}
  4. {
  5. * Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved.
  6. *
  7. * @APPLE_LICENSE_HEADER_START@
  8. *
  9. * The contents of this file constitute Original Code as defined in and
  10. * are subject to the Apple Public Source License Version 1.1 (the
  11. * "License"). You may not use this file except in compliance with the
  12. * License. Please obtain a copy of the License at
  13. * http://www.apple.com/publicsource and read it before using this file.
  14. *
  15. * This Original Code and all software distributed under the License are
  16. * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  17. * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  18. * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
  19. * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
  20. * License for the specific language governing rights and limitations
  21. * under the License.
  22. *
  23. * @APPLE_LICENSE_HEADER_END@
  24. }
  25. {
  26. * @OSF_COPYRIGHT@
  27. }
  28. {
  29. * Mach Operating System
  30. * Copyright (c) 1991,1990,1989 Carnegie Mellon University
  31. * All Rights Reserved.
  32. *
  33. * Permission to use, copy, modify and distribute this software and its
  34. * documentation is hereby granted, provided that both the copyright
  35. * notice and this permission notice appear in all copies of the
  36. * software, derivative works or modified versions, and any portions
  37. * thereof, and that both notices appear in supporting documentation.
  38. *
  39. * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
  40. * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
  41. * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
  42. *
  43. * Carnegie Mellon requests users of this software to return to
  44. *
  45. * Software Distribution Coordinator or [email protected]
  46. * School of Computer Science
  47. * Carnegie Mellon University
  48. * Pittsburgh PA 15213-3890
  49. *
  50. * any improvements or extensions that they make and grant Carnegie Mellon
  51. * the rights to redistribute these changes.
  52. }
  53. {
  54. }
  55. {
  56. * File: thread_status.h
  57. * Author: Avadis Tevanian, Jr.
  58. * Date: 1985
  59. *
  60. * This file contains the structure definitions for the thread
  61. * state as applied to I386 processors.
  62. }
  63. {
  64. * i386_thread_state this is the structure that is exported
  65. * to user threads for use in status/mutate
  66. * calls. This structure should never
  67. * change.
  68. *
  69. * i386_float_state exported to use threads for access to
  70. * floating point registers. Try not to
  71. * change this one, either.
  72. *
  73. }
  74. { THREAD_STATE_FLAVOR_LIST 0 }
  75. {
  76. const
  77. i386_THREAD_STATE = 1;
  78. i386_FLOAT_STATE = 2;
  79. i386_EXCEPTION_STATE = 3;
  80. THREAD_STATE_NONE = 4;
  81. }
  82. {
  83. * Main thread state consists of
  84. * general registers, segment registers,
  85. * eip and eflags.
  86. }
  87. type
  88. i386_thread_state = record
  89. eax : cuint;
  90. ebx : cuint;
  91. ecx : cuint;
  92. edx : cuint;
  93. edi : cuint;
  94. esi : cuint;
  95. ebp : cuint;
  96. esp : cuint;
  97. ss : cuint;
  98. eflags : cuint;
  99. eip : cuint;
  100. cs : cuint;
  101. ds : cuint;
  102. es : cuint;
  103. fs : cuint;
  104. gs : cuint;
  105. end;
  106. i386_thread_state_t = i386_thread_state;
  107. {
  108. * Default segment register values.
  109. }
  110. const
  111. USER_CODE_SELECTOR = $0017;
  112. USER_DATA_SELECTOR = $001f;
  113. KERN_CODE_SELECTOR = $0008;
  114. KERN_DATA_SELECTOR = $0010;
  115. FP_PREC_24B = 0;
  116. FP_PREC_53B = 2;
  117. FP_PREC_64B = 3;
  118. FP_RND_NEAR = 0;
  119. FP_RND_DOWN = 1;
  120. FP_RND_UP = 2;
  121. FP_CHOP = 3;
  122. type
  123. fp_control = record
  124. flag0 : cushort;
  125. end;
  126. fp_control_t = fp_control;
  127. const
  128. bm_fp_control_invalid = $1;
  129. bp_fp_control_invalid = 0;
  130. bm_fp_control_denorm = $2;
  131. bp_fp_control_denorm = 1;
  132. bm_fp_control_zdiv = $4;
  133. bp_fp_control_zdiv = 2;
  134. bm_fp_control_ovrfl = $8;
  135. bp_fp_control_ovrfl = 3;
  136. bm_fp_control_undfl = $10;
  137. bp_fp_control_undfl = 4;
  138. bm_fp_control_precis = $20;
  139. bp_fp_control_precis = 5;
  140. bm_fp_control_x = $C0;
  141. bp_fp_control_x = 6;
  142. bm_fp_control_pc = $300;
  143. bp_fp_control_pc = 8;
  144. bm_fp_control_rc = $C00;
  145. bp_fp_control_rc = 10;
  146. bm_fp_control_inf = $1000;
  147. bp_fp_control_inf = 12;
  148. bm_fp_control_y = $E000;
  149. bp_fp_control_y = 13;
  150. (*
  151. function invalid(var a : fp_control) : word;
  152. procedure set_invalid(var a : fp_control; __invalid : word);
  153. function denorm(var a : fp_control) : word;
  154. procedure set_denorm(var a : fp_control; __denorm : word);
  155. function zdiv(var a : fp_control) : word;
  156. procedure set_zdiv(var a : fp_control; __zdiv : word);
  157. function ovrfl(var a : fp_control) : word;
  158. procedure set_ovrfl(var a : fp_control; __ovrfl : word);
  159. function undfl(var a : fp_control) : word;
  160. procedure set_undfl(var a : fp_control; __undfl : word);
  161. function precis(var a : fp_control) : word;
  162. procedure set_precis(var a : fp_control; __precis : word);
  163. function pc(var a : fp_control) : word;
  164. procedure set_pc(var a : fp_control; __pc : word);
  165. function rc(var a : fp_control) : word;
  166. procedure set_rc(var a : fp_control; __rc : word);
  167. function inf(var a : fp_control) : word;
  168. procedure set_inf(var a : fp_control; __inf : word);
  169. *)
  170. {
  171. * Status word.
  172. }
  173. type
  174. fp_status = record
  175. flag0 : cushort;
  176. end;
  177. fp_status_t = fp_status;
  178. const
  179. bm_fp_status_invalid = $1;
  180. bp_fp_status_invalid = 0;
  181. bm_fp_status_denorm = $2;
  182. bp_fp_status_denorm = 1;
  183. bm_fp_status_zdiv = $4;
  184. bp_fp_status_zdiv = 2;
  185. bm_fp_status_ovrfl = $8;
  186. bp_fp_status_ovrfl = 3;
  187. bm_fp_status_undfl = $10;
  188. bp_fp_status_undfl = 4;
  189. bm_fp_status_precis = $20;
  190. bp_fp_status_precis = 5;
  191. bm_fp_status_stkflt = $40;
  192. bp_fp_status_stkflt = 6;
  193. bm_fp_status_errsumm = $80;
  194. bp_fp_status_errsumm = 7;
  195. bm_fp_status_c0 = $100;
  196. bp_fp_status_c0 = 8;
  197. bm_fp_status_c1 = $200;
  198. bp_fp_status_c1 = 9;
  199. bm_fp_status_c2 = $400;
  200. bp_fp_status_c2 = 10;
  201. bm_fp_status_tos = $3800;
  202. bp_fp_status_tos = 11;
  203. bm_fp_status_c3 = $4000;
  204. bp_fp_status_c3 = 14;
  205. bm_fp_status_busy = $8000;
  206. bp_fp_status_busy = 15;
  207. {
  208. function invalid(var a : fp_status) : word;
  209. procedure set_invalid(var a : fp_status; __invalid : word);
  210. function denorm(var a : fp_status) : word;
  211. procedure set_denorm(var a : fp_status; __denorm : word);
  212. function zdiv(var a : fp_status) : word;
  213. procedure set_zdiv(var a : fp_status; __zdiv : word);
  214. function ovrfl(var a : fp_status) : word;
  215. procedure set_ovrfl(var a : fp_status; __ovrfl : word);
  216. function undfl(var a : fp_status) : word;
  217. procedure set_undfl(var a : fp_status; __undfl : word);
  218. function precis(var a : fp_status) : word;
  219. procedure set_precis(var a : fp_status; __precis : word);
  220. function stkflt(var a : fp_status) : word;
  221. procedure set_stkflt(var a : fp_status; __stkflt : word);
  222. function errsumm(var a : fp_status) : word;
  223. procedure set_errsumm(var a : fp_status; __errsumm : word);
  224. function c0(var a : fp_status) : word;
  225. procedure set_c0(var a : fp_status; __c0 : word);
  226. function c1(var a : fp_status) : word;
  227. procedure set_c1(var a : fp_status; __c1 : word);
  228. function c2(var a : fp_status) : word;
  229. procedure set_c2(var a : fp_status; __c2 : word);
  230. function tos(var a : fp_status) : word;
  231. procedure set_tos(var a : fp_status; __tos : word);
  232. function c3(var a : fp_status) : word;
  233. procedure set_c3(var a : fp_status; __c3 : word);
  234. function busy(var a : fp_status) : word;
  235. procedure set_busy(var a : fp_status; __busy : word);
  236. }
  237. { defn of 80bit x87 FPU or MMX register }
  238. type
  239. mmst_reg = record
  240. mmst_reg : array[0..9] of byte;
  241. mmst_rsrv : array[0..5] of byte;
  242. end;
  243. { defn of 128 bit XMM regs }
  244. xmm_reg = record
  245. xmm_reg : array[0..15] of byte;
  246. end;
  247. {
  248. * Floating point state.
  249. }
  250. { number of chars worth of data from fpu_fcw }
  251. const
  252. FP_STATE_BYTES = 512;
  253. { For legacy reasons we need to leave the hw_state as char bytes }
  254. { x87 FPU control word }
  255. { x87 FPU status word }
  256. { x87 FPU tag word }
  257. { reserved } { x87 FPU Opcode }
  258. { x87 FPU Instruction Pointer offset }
  259. { x87 FPU Instruction Pointer Selector }
  260. { reserved }
  261. { x87 FPU Instruction Operand(Data) Pointer offset }
  262. { x87 FPU Instruction Operand(Data) Pointer Selector }
  263. { reserved }
  264. { MXCSR Register state }
  265. { MXCSR mask }
  266. { ST0/MM0 }
  267. { ST1/MM1 }
  268. { ST2/MM2 }
  269. { ST3/MM3 }
  270. { ST4/MM4 }
  271. { ST5/MM5 }
  272. { ST6/MM6 }
  273. { ST7/MM7 }
  274. { XMM 0 }
  275. { XMM 1 }
  276. { XMM 2 }
  277. { XMM 3 }
  278. { XMM 4 }
  279. { XMM 5 }
  280. { XMM 6 }
  281. { XMM 7 }
  282. { reserved }
  283. type
  284. i386_float_state = record
  285. fpu_reserved : array[0..1] of cint;
  286. fpu_fcw : fp_control_t;
  287. fpu_fsw : fp_status_t;
  288. fpu_ftw : cuint8;
  289. fpu_rsrv1 : cuint8;
  290. fpu_fop : cuint16;
  291. fpu_ip : cuint32;
  292. fpu_cs : cuint16;
  293. fpu_rsrv2 : cuint16;
  294. fpu_dp : cuint32;
  295. fpu_ds : cuint16;
  296. fpu_rsrv3 : cuint16;
  297. fpu_mxcsr : cuint32;
  298. fpu_mxcsrmask : cuint32;
  299. fpu_stmm0 : mmst_reg;
  300. fpu_stmm1 : mmst_reg;
  301. fpu_stmm2 : mmst_reg;
  302. fpu_stmm3 : mmst_reg;
  303. fpu_stmm4 : mmst_reg;
  304. fpu_stmm5 : mmst_reg;
  305. fpu_stmm6 : mmst_reg;
  306. fpu_stmm7 : mmst_reg;
  307. fpu_xmm0 : xmm_reg;
  308. fpu_xmm1 : xmm_reg;
  309. fpu_xmm2 : xmm_reg;
  310. fpu_xmm3 : xmm_reg;
  311. fpu_xmm4 : xmm_reg;
  312. fpu_xmm5 : xmm_reg;
  313. fpu_xmm6 : xmm_reg;
  314. fpu_xmm7 : xmm_reg;
  315. fpu_rsrv4 : array[0..(14*16)-1] of byte;
  316. fpu_reserved1 : cint;
  317. end;
  318. i386_float_state_t = i386_float_state;
  319. {
  320. * Extra state that may be
  321. * useful to exception handlers.
  322. }
  323. i386_exception_state = record
  324. trapno : cuint;
  325. err : cuint;
  326. faultvaddr : cuint;
  327. end;
  328. i386_exception_state_t = i386_exception_state;
  329. (*
  330. function invalid(var a : fp_control) : word;
  331. begin
  332. invalid:=(a.flag0 and bm_fp_control_invalid) shr bp_fp_control_invalid;
  333. end;
  334. procedure set_invalid(var a : fp_control; __invalid : word);
  335. begin
  336. a.flag0:=a.flag0 or ((__invalid shl bp_fp_control_invalid) and bm_fp_control_invalid);
  337. end;
  338. function denorm(var a : fp_control) : word;
  339. begin
  340. denorm:=(a.flag0 and bm_fp_control_denorm) shr bp_fp_control_denorm;
  341. end;
  342. procedure set_denorm(var a : fp_control; __denorm : word);
  343. begin
  344. a.flag0:=a.flag0 or ((__denorm shl bp_fp_control_denorm) and bm_fp_control_denorm);
  345. end;
  346. function zdiv(var a : fp_control) : word;
  347. begin
  348. zdiv:=(a.flag0 and bm_fp_control_zdiv) shr bp_fp_control_zdiv;
  349. end;
  350. procedure set_zdiv(var a : fp_control; __zdiv : word);
  351. begin
  352. a.flag0:=a.flag0 or ((__zdiv shl bp_fp_control_zdiv) and bm_fp_control_zdiv);
  353. end;
  354. function ovrfl(var a : fp_control) : word;
  355. begin
  356. ovrfl:=(a.flag0 and bm_fp_control_ovrfl) shr bp_fp_control_ovrfl;
  357. end;
  358. procedure set_ovrfl(var a : fp_control; __ovrfl : word);
  359. begin
  360. a.flag0:=a.flag0 or ((__ovrfl shl bp_fp_control_ovrfl) and bm_fp_control_ovrfl);
  361. end;
  362. function undfl(var a : fp_control) : word;
  363. begin
  364. undfl:=(a.flag0 and bm_fp_control_undfl) shr bp_fp_control_undfl;
  365. end;
  366. procedure set_undfl(var a : fp_control; __undfl : word);
  367. begin
  368. a.flag0:=a.flag0 or ((__undfl shl bp_fp_control_undfl) and bm_fp_control_undfl);
  369. end;
  370. function precis(var a : fp_control) : word;
  371. begin
  372. precis:=(a.flag0 and bm_fp_control_precis) shr bp_fp_control_precis;
  373. end;
  374. procedure set_precis(var a : fp_control; __precis : word);
  375. begin
  376. a.flag0:=a.flag0 or ((__precis shl bp_fp_control_precis) and bm_fp_control_precis);
  377. end;
  378. function x(var a : fp_control) : word;
  379. begin
  380. x:=(a.flag0 and bm_fp_control_x) shr bp_fp_control_x;
  381. end;
  382. procedure set_x(var a : fp_control; __x : word);
  383. begin
  384. a.flag0:=a.flag0 or ((__x shl bp_fp_control_x) and bm_fp_control_x);
  385. end;
  386. function pc(var a : fp_control) : word;
  387. begin
  388. pc:=(a.flag0 and bm_fp_control_pc) shr bp_fp_control_pc;
  389. end;
  390. procedure set_pc(var a : fp_control; __pc : word);
  391. begin
  392. a.flag0:=a.flag0 or ((__pc shl bp_fp_control_pc) and bm_fp_control_pc);
  393. end;
  394. function rc(var a : fp_control) : word;
  395. begin
  396. rc:=(a.flag0 and bm_fp_control_rc) shr bp_fp_control_rc;
  397. end;
  398. procedure set_rc(var a : fp_control; __rc : word);
  399. begin
  400. a.flag0:=a.flag0 or ((__rc shl bp_fp_control_rc) and bm_fp_control_rc);
  401. end;
  402. function inf(var a : fp_control) : word;
  403. begin
  404. inf:=(a.flag0 and bm_fp_control_inf) shr bp_fp_control_inf;
  405. end;
  406. procedure set_inf(var a : fp_control; __inf : word);
  407. begin
  408. a.flag0:=a.flag0 or ((__inf shl bp_fp_control_inf) and bm_fp_control_inf);
  409. end;
  410. function y(var a : fp_control) : word;
  411. begin
  412. y:=(a.flag0 and bm_fp_control_y) shr bp_fp_control_y;
  413. end;
  414. procedure set_y(var a : fp_control; __y : word);
  415. begin
  416. a.flag0:=a.flag0 or ((__y shl bp_fp_control_y) and bm_fp_control_y);
  417. end;
  418. function invalid(var a : fp_status) : word;
  419. begin
  420. invalid:=(a.flag0 and bm_fp_status_invalid) shr bp_fp_status_invalid;
  421. end;
  422. procedure set_invalid(var a : fp_status; __invalid : word);
  423. begin
  424. a.flag0:=a.flag0 or ((__invalid shl bp_fp_status_invalid) and bm_fp_status_invalid);
  425. end;
  426. function denorm(var a : fp_status) : word;
  427. begin
  428. denorm:=(a.flag0 and bm_fp_status_denorm) shr bp_fp_status_denorm;
  429. end;
  430. procedure set_denorm(var a : fp_status; __denorm : word);
  431. begin
  432. a.flag0:=a.flag0 or ((__denorm shl bp_fp_status_denorm) and bm_fp_status_denorm);
  433. end;
  434. function zdiv(var a : fp_status) : word;
  435. begin
  436. zdiv:=(a.flag0 and bm_fp_status_zdiv) shr bp_fp_status_zdiv;
  437. end;
  438. procedure set_zdiv(var a : fp_status; __zdiv : word);
  439. begin
  440. a.flag0:=a.flag0 or ((__zdiv shl bp_fp_status_zdiv) and bm_fp_status_zdiv);
  441. end;
  442. function ovrfl(var a : fp_status) : word;
  443. begin
  444. ovrfl:=(a.flag0 and bm_fp_status_ovrfl) shr bp_fp_status_ovrfl;
  445. end;
  446. procedure set_ovrfl(var a : fp_status; __ovrfl : word);
  447. begin
  448. a.flag0:=a.flag0 or ((__ovrfl shl bp_fp_status_ovrfl) and bm_fp_status_ovrfl);
  449. end;
  450. function undfl(var a : fp_status) : word;
  451. begin
  452. undfl:=(a.flag0 and bm_fp_status_undfl) shr bp_fp_status_undfl;
  453. end;
  454. procedure set_undfl(var a : fp_status; __undfl : word);
  455. begin
  456. a.flag0:=a.flag0 or ((__undfl shl bp_fp_status_undfl) and bm_fp_status_undfl);
  457. end;
  458. function precis(var a : fp_status) : word;
  459. begin
  460. precis:=(a.flag0 and bm_fp_status_precis) shr bp_fp_status_precis;
  461. end;
  462. procedure set_precis(var a : fp_status; __precis : word);
  463. begin
  464. a.flag0:=a.flag0 or ((__precis shl bp_fp_status_precis) and bm_fp_status_precis);
  465. end;
  466. function stkflt(var a : fp_status) : word;
  467. begin
  468. stkflt:=(a.flag0 and bm_fp_status_stkflt) shr bp_fp_status_stkflt;
  469. end;
  470. procedure set_stkflt(var a : fp_status; __stkflt : word);
  471. begin
  472. a.flag0:=a.flag0 or ((__stkflt shl bp_fp_status_stkflt) and bm_fp_status_stkflt);
  473. end;
  474. function errsumm(var a : fp_status) : word;
  475. begin
  476. errsumm:=(a.flag0 and bm_fp_status_errsumm) shr bp_fp_status_errsumm;
  477. end;
  478. procedure set_errsumm(var a : fp_status; __errsumm : word);
  479. begin
  480. a.flag0:=a.flag0 or ((__errsumm shl bp_fp_status_errsumm) and bm_fp_status_errsumm);
  481. end;
  482. function c0(var a : fp_status) : word;
  483. begin
  484. c0:=(a.flag0 and bm_fp_status_c0) shr bp_fp_status_c0;
  485. end;
  486. procedure set_c0(var a : fp_status; __c0 : word);
  487. begin
  488. a.flag0:=a.flag0 or ((__c0 shl bp_fp_status_c0) and bm_fp_status_c0);
  489. end;
  490. function c1(var a : fp_status) : word;
  491. begin
  492. c1:=(a.flag0 and bm_fp_status_c1) shr bp_fp_status_c1;
  493. end;
  494. procedure set_c1(var a : fp_status; __c1 : word);
  495. begin
  496. a.flag0:=a.flag0 or ((__c1 shl bp_fp_status_c1) and bm_fp_status_c1);
  497. end;
  498. function c2(var a : fp_status) : word;
  499. begin
  500. c2:=(a.flag0 and bm_fp_status_c2) shr bp_fp_status_c2;
  501. end;
  502. procedure set_c2(var a : fp_status; __c2 : word);
  503. begin
  504. a.flag0:=a.flag0 or ((__c2 shl bp_fp_status_c2) and bm_fp_status_c2);
  505. end;
  506. function tos(var a : fp_status) : word;
  507. begin
  508. tos:=(a.flag0 and bm_fp_status_tos) shr bp_fp_status_tos;
  509. end;
  510. procedure set_tos(var a : fp_status; __tos : word);
  511. begin
  512. a.flag0:=a.flag0 or ((__tos shl bp_fp_status_tos) and bm_fp_status_tos);
  513. end;
  514. function c3(var a : fp_status) : word;
  515. begin
  516. c3:=(a.flag0 and bm_fp_status_c3) shr bp_fp_status_c3;
  517. end;
  518. procedure set_c3(var a : fp_status; __c3 : word);
  519. begin
  520. a.flag0:=a.flag0 or ((__c3 shl bp_fp_status_c3) and bm_fp_status_c3);
  521. end;
  522. function busy(var a : fp_status) : word;
  523. begin
  524. busy:=(a.flag0 and bm_fp_status_busy) shr bp_fp_status_busy;
  525. end;
  526. procedure set_busy(var a : fp_status; __busy : word);
  527. begin
  528. a.flag0:=a.flag0 or ((__busy shl bp_fp_status_busy) and bm_fp_status_busy);
  529. end;
  530. *)
  531. mcontext_t = record
  532. es: i386_exception_state_t;
  533. ss: i386_thread_state_t;
  534. fs: i386_float_state_t;
  535. end;
  536. psigcontext = ^sigcontextrec;
  537. psigcontextrec = ^sigcontextrec;
  538. sigcontextrec = record
  539. sc_onstack: cint;
  540. sc_mask: cint;
  541. ts: i386_thread_state;
  542. end;