census logo
[bootcensus] / src / int86.h
1 /*
2 pcboot - bootable PC demo/game kernel
3 Copyright (C) 2018  John Tsiombikas <nuclear@member.fsf.org>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY, without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program.  If not, see <https://www.gnu.org/licenses/>.
17 */
18 #ifndef INT86_H_
19 #define INT86_H_
20
21 #include <inttypes.h>
22
23 struct int86regs {
24         uint32_t edi, esi, ebp, esp;
25         uint32_t ebx, edx, ecx, eax;
26         uint16_t flags;
27         uint16_t es, ds, fs, gs;
28 } __attribute__ ((packed));
29
30 #define FLAGS_CARRY             0x0001
31 #define FLAGS_PARITY    0x0004
32 #define FLAGS_AUXC              0x0010
33 #define FLAGS_ZERO              0x0040
34 #define FLAGS_SIGN              0x0080
35 #define FLAGS_TRAP              0x0100
36 #define FLAGS_INTR              0x0200
37 #define FLAGS_DIR               0x0400
38 #define FLAGS_OVF               0x0800
39 #define FLAGS_SIOPL(x)  (((uint16_t)(x) & 3) << 12)
40 #define FLAGS_GIOPL(x)  (((x) >> 12) & 3)
41 #define FLAGS_NTASK             0x4000
42
43 void int86(int inum, struct int86regs *regs);
44
45 #endif  /* INT86_H_ */