1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 20:37:34 +00:00

Kernel: Add SMP IPI support

We can now properly initialize all processors without
crashing by sending SMP IPI messages to synchronize memory
between processors.

We now initialize the APs once we have the scheduler running.
This is so that we can process IPI messages from the other
cores.

Also rework interrupt handling a bit so that it's more of a
1:1 mapping. We need to allocate non-sharable interrupts for
IPIs.

This also fixes the occasional hang/crash because all
CPUs now synchronize memory with each other.
This commit is contained in:
Tom 2020-07-06 07:27:22 -06:00 committed by Andreas Kling
parent dec27e5e6f
commit bc107d0b33
27 changed files with 1236 additions and 627 deletions

View file

@ -28,260 +28,179 @@
#include <Kernel/Arch/i386/Interrupts.h>
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(0, 0x50)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(1, 0x51)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(2, 0x52)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(3, 0x53)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(4, 0x54)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(5, 0x55)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(6, 0x56)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(7, 0x57)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(8, 0x58)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(9, 0x59)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(10, 0x5a)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(11, 0x5b)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(12, 0x5c)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(13, 0x5d)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(14, 0x5e)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(15, 0x5f)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(16, 0x60)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(17, 0x61)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(18, 0x62)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(19, 0x63)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(20, 0x64)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(21, 0x65)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(22, 0x66)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(23, 0x67)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(24, 0x68)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(25, 0x69)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(26, 0x6a)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(27, 0x6b)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(28, 0x6c)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(29, 0x6d)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(30, 0x6e)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(31, 0x6f)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(32, 0x70)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(33, 0x71)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(34, 0x72)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(35, 0x73)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(36, 0x74)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(37, 0x75)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(38, 0x76)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(39, 0x77)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(40, 0x78)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(41, 0x79)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(42, 0x7a)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(43, 0x7b)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(44, 0x7c)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(45, 0x7d)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(46, 0x7e)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(47, 0x7f)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(48, 0x80)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(49, 0x81)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(50, 0x82)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(51, 0x83)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(52, 0x84)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(53, 0x85)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(54, 0x86)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(55, 0x87)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(56, 0x88)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(57, 0x89)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(58, 0x8a)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(59, 0x8b)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(60, 0x8c)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(61, 0x8d)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(62, 0x8e)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(63, 0x8f)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(64, 0x90)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(65, 0x91)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(66, 0x92)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(67, 0x93)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(68, 0x94)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(69, 0x95)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(70, 0x96)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(71, 0x97)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(72, 0x98)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(73, 0x99)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(74, 0x9a)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(75, 0x9b)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(76, 0x9c)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(77, 0x9d)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(78, 0x9e)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(79, 0x9f)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(80, 0xa0)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(81, 0xa1)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(82, 0xa2)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(83, 0xa3)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(84, 0xa4)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(85, 0xa5)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(86, 0xa6)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(87, 0xa7)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(88, 0xa8)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(89, 0xa9)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(90, 0xaa)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(91, 0xab)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(92, 0xac)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(93, 0xad)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(94, 0xae)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(95, 0xaf)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(96, 0xb0)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(97, 0xb1)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(98, 0xb2)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(99, 0xb3)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(100, 0xb4)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(101, 0xb5)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(102, 0xb6)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(103, 0xb7)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(104, 0xb8)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(105, 0xb9)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(106, 0xba)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(107, 0xbb)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(108, 0xbc)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(109, 0xbd)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(110, 0xbe)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(111, 0xbf)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(112, 0xc0)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(113, 0xc1)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(114, 0xc2)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(115, 0xc3)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(116, 0xc4)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(117, 0xc5)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(118, 0xc6)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(119, 0xc7)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(120, 0xc8)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(121, 0xc9)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(122, 0xca)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(123, 0xcb)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(124, 0xcc)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(125, 0xcd)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(126, 0xce)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(127, 0xcf)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(128, 0xd0)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(129, 0xd1)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(130, 0xd2)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(131, 0xd3)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(132, 0xd4)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(133, 0xd5)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(134, 0xd6)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(135, 0xd7)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(136, 0xd8)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(137, 0xd9)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(138, 0xda)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(139, 0xdb)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(140, 0xdc)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(141, 0xdd)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(142, 0xde)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(143, 0xdf)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(144, 0xe0)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(145, 0xe1)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(146, 0xe2)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(147, 0xe3)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(148, 0xe4)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(149, 0xe5)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(150, 0xe6)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(151, 0xe7)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(152, 0xe8)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(153, 0xe9)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(154, 0xea)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(155, 0xeb)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(156, 0xec)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(157, 0xed)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(158, 0xee)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(159, 0xef)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(160, 0xf0)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(161, 0xf1)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(162, 0xf2)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(163, 0xf3)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(164, 0xf4)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(165, 0xf5)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(166, 0xf6)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(167, 0xf7)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(168, 0xf8)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(169, 0xf9)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(170, 0xfa)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(171, 0xfb)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(172, 0xfc)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(173, 0xfd)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(174, 0xfe)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(175, 0xff)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(176, 0x100)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(177, 0x101)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(178, 0x102)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(179, 0x103)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(180, 0x104)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(181, 0x105)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(182, 0x106)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(183, 0x107)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(184, 0x108)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(185, 0x109)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(186, 0x10a)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(187, 0x10b)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(188, 0x10c)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(189, 0x10d)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(190, 0x10e)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(191, 0x10f)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(192, 0x110)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(193, 0x111)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(194, 0x112)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(195, 0x113)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(196, 0x114)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(197, 0x115)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(198, 0x116)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(199, 0x117)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(200, 0x118)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(201, 0x119)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(202, 0x11a)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(203, 0x11b)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(204, 0x11c)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(205, 0x11d)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(206, 0x11e)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(207, 0x11f)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(208, 0x120)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(209, 0x121)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(210, 0x122)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(211, 0x123)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(212, 0x124)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(213, 0x125)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(214, 0x126)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(215, 0x127)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(216, 0x128)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(217, 0x129)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(218, 0x12a)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(219, 0x12b)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(220, 0x12c)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(221, 0x12d)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(222, 0x12e)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(223, 0x12f)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(224, 0x130)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(225, 0x131)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(226, 0x132)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(227, 0x133)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(228, 0x134)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(229, 0x135)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(230, 0x136)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(231, 0x137)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(232, 0x138)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(233, 0x139)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(234, 0x13a)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(235, 0x13b)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(236, 0x13c)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(237, 0x13d)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(238, 0x13e)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(239, 0x13f)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(240, 0x140)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(241, 0x141)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(242, 0x142)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(243, 0x143)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(244, 0x144)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(245, 0x145)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(246, 0x146)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(247, 0x147)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(248, 0x148)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(249, 0x149)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(250, 0x14a)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(251, 0x14b)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(252, 0x14c)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(253, 0x14d)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(254, 0x14e)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(255, 0x14f)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(256, 0x150)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(80)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(81)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(82)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(83)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(84)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(85)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(86)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(87)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(88)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(89)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(90)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(91)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(92)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(93)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(94)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(95)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(96)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(97)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(98)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(99)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(100)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(101)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(102)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(103)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(104)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(105)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(106)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(107)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(108)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(109)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(110)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(111)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(112)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(113)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(114)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(115)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(116)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(117)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(118)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(119)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(120)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(121)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(122)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(123)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(124)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(125)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(126)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(127)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(128)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(129)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(130)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(131)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(132)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(133)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(134)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(135)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(136)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(137)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(138)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(139)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(140)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(141)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(142)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(143)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(144)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(145)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(146)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(147)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(148)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(149)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(150)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(151)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(152)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(153)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(154)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(155)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(156)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(157)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(158)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(159)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(160)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(161)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(162)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(163)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(164)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(165)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(166)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(167)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(168)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(169)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(170)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(171)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(172)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(173)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(174)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(175)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(176)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(177)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(178)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(179)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(180)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(181)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(182)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(183)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(184)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(185)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(186)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(187)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(188)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(189)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(190)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(191)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(192)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(193)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(194)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(195)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(196)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(197)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(198)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(199)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(200)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(201)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(202)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(203)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(204)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(205)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(206)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(207)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(208)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(209)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(210)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(211)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(212)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(213)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(214)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(215)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(216)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(217)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(218)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(219)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(220)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(221)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(222)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(223)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(224)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(225)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(226)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(227)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(228)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(229)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(230)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(231)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(232)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(233)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(234)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(235)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(236)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(237)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(238)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(239)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(240)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(241)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(242)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(243)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(244)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(245)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(246)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(247)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(248)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(249)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(250)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(251)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(252)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(253)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(254)
GENERATE_GENERIC_INTERRUPT_HANDLER_ASM_ENTRY(255)