INCS= archtypes.h bios.h cmos.h cpu.h diskparm.h fpu.h int86.h \
interrupt.h mcontext.h memory.h partition.h pci.h ports.h \
- stackframe.h vm.h
+ stackframe.h vm.h asm.h
.include <bsd.kinc.mk>
--- /dev/null
+/*-
+ * Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * William Jolitz.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)asm.h 5.5 (Berkeley) 5/7/91
+ */
+
+#ifndef _I386_ASM_H_
+#define _I386_ASM_H_
+
+#ifdef __ELF__
+# define _C_LABEL(x) x
+#else
+# ifdef __STDC__
+# define _C_LABEL(x) _ ## x
+# else
+# define _C_LABEL(x) _/**/x
+# endif
+#endif
+#define _ASM_LABEL(x) x
+
+/* allow overriding entrypoint alignment */
+#if !defined(_ALIGN_TEXT)
+# define _ALIGN_TEXT .balign 16
+#endif
+
+#ifdef __ACK__
+#define _ENTRY(x) \
+ .text; _ALIGN_TEXT; .globl x; x:
+#else
+#define _ENTRY(x) \
+ .text; _ALIGN_TEXT; .globl x; .type x,@function; x:
+#endif
+#define _LABEL(x) \
+ .globl x; x:
+
+#define ENTRY(y) _ENTRY(_C_LABEL(y))
+#define NENTRY(y) _ENTRY(_C_LABEL(y))
+#define ASENTRY(y) _ENTRY(_ASM_LABEL(y))
+#define LABEL(y) _LABEL(_C_LABEL(y))
+#define END(y) .size y, . - y
+
+#define IMPORT(sym) \
+ .extern _C_LABEL(sym)
+
+#endif /* !_I386_ASM_H_ */
#include "apic.h"
#include "sconst.h"
#include "apic_asm.h"
+#include <machine/asm.h>
-.globl _apic_hwint00 /* handlers for hardware interrupts */
-.globl _apic_hwint01
-.globl _apic_hwint02
-.globl _apic_hwint03
-.globl _apic_hwint04
-.globl _apic_hwint05
-.globl _apic_hwint06
-.globl _apic_hwint07
-.globl _apic_hwint08
-.globl _apic_hwint09
-.globl _apic_hwint10
-.globl _apic_hwint11
-.globl _apic_hwint12
-.globl _apic_hwint13
-.globl _apic_hwint14
-.globl _apic_hwint15
-
-.text
#define APIC_IRQ_HANDLER(irq) \
push $irq ;\
- call _irq_handle /* intr_handle(irq_handlers[irq]) */ ;\
+ call _C_LABEL(irq_handle) /* intr_handle(irq_handlers[irq]) */ ;\
add $4, %esp ;\
- mov _lapic_eoi_addr, %eax ;\
+ mov _C_LABEL(lapic_eoi_addr), %eax ;\
movl $0, (%eax) ;\
/*===========================================================================*/
\
SAVE_PROCESS_CTX(0) ;\
push %ebp ;\
- call _context_stop ;\
+ call _C_LABEL(context_stop) ;\
add $4, %esp ;\
movl $0, %ebp /* for stack trace */ ;\
APIC_IRQ_HANDLER(irq) ;\
- jmp _switch_to_user ;\
+ jmp _C_LABEL(switch_to_user) ;\
\
0: \
pusha ;\
- call _context_stop_idle ;\
+ call _C_LABEL(context_stop_idle) ;\
APIC_IRQ_HANDLER(irq) ;\
CLEAR_IF(10*4(%esp)) ;\
popa ;\
iret ;
+/* Handlers for hardware interrupts */
/* Each of these entry points is an expansion of the hwint_master macro */
-.balign 16
-_apic_hwint00:
+ENTRY(apic_hwint00)
/* Interrupt routine for irq 0 (the clock). */
apic_hwint(0)
-.balign 16
-_apic_hwint01:
+ENTRY(apic_hwint01)
/* Interrupt routine for irq 1 (keyboard) */
apic_hwint(1)
-.balign 16
-_apic_hwint02:
+ENTRY(apic_hwint02)
/* Interrupt routine for irq 2 (cascade!) */
apic_hwint(2)
-.balign 16
-_apic_hwint03:
+ENTRY(apic_hwint03)
/* Interrupt routine for irq 3 (second serial) */
apic_hwint(3)
-.balign 16
-_apic_hwint04:
+ENTRY(apic_hwint04)
/* Interrupt routine for irq 4 (first serial) */
apic_hwint(4)
-.balign 16
-_apic_hwint05:
+ENTRY(apic_hwint05)
/* Interrupt routine for irq 5 (XT winchester) */
apic_hwint(5)
-.balign 16
-_apic_hwint06:
+ENTRY(apic_hwint06)
/* Interrupt routine for irq 6 (floppy) */
apic_hwint(6)
-.balign 16
-_apic_hwint07:
+ENTRY(apic_hwint07)
/* Interrupt routine for irq 7 (printer) */
apic_hwint(7)
-.balign 16
-_apic_hwint08:
+ENTRY(apic_hwint08)
/* Interrupt routine for irq 8 (realtime clock) */
apic_hwint(8)
-.balign 16
-_apic_hwint09:
+ENTRY(apic_hwint09)
/* Interrupt routine for irq 9 (irq 2 redirected) */
apic_hwint(9)
-.balign 16
-_apic_hwint10:
+ENTRY(apic_hwint10)
/* Interrupt routine for irq 10 */
apic_hwint(10)
-.balign 16
-_apic_hwint11:
+ENTRY(apic_hwint11)
/* Interrupt routine for irq 11 */
apic_hwint(11)
-.balign 16
-_apic_hwint12:
+ENTRY(apic_hwint12)
/* Interrupt routine for irq 12 */
apic_hwint(12)
-.balign 16
-_apic_hwint13:
+ENTRY(apic_hwint13)
/* Interrupt routine for irq 13 (FPU exception) */
apic_hwint(13)
-.balign 16
-_apic_hwint14:
+ENTRY(apic_hwint14)
/* Interrupt routine for irq 14 (AT winchester) */
apic_hwint(14)
-.balign 16
-_apic_hwint15:
+ENTRY(apic_hwint15)
/* Interrupt routine for irq 15 */
apic_hwint(15)
#define LAPIC_INTR_HANDLER(func) \
movl $func, %eax ;\
call *%eax /* call the actual handler */ ;\
- mov _lapic_eoi_addr, %eax /* the end of handler*/ ;\
+ mov _C_LABEL(lapic_eoi_addr), %eax /* the end of handler*/ ;\
movl $0, (%eax) ;
/*===========================================================================*/
\
SAVE_PROCESS_CTX(0) ;\
push %ebp ;\
- call _context_stop ;\
+ call _C_LABEL(context_stop) ;\
add $4, %esp ;\
movl $0, %ebp /* for stack trace */ ;\
LAPIC_INTR_HANDLER(func) ;\
- jmp _switch_to_user ;\
+ jmp _C_LABEL(switch_to_user) ;\
\
0: \
pusha ;\
- call _context_stop_idle ;\
+ call _C_LABEL(context_stop_idle) ;\
LAPIC_INTR_HANDLER(func) ;\
CLEAR_IF(10*4(%esp)) ;\
popa ;\
iret ;
/* apic timer tick handlers */
-.globl _lapic_bsp_timer_int_handler
-_lapic_bsp_timer_int_handler:
- lapic_intr(_bsp_timer_int_handler)
+ENTRY(lapic_bsp_timer_int_handler)
+ lapic_intr(_C_LABEL(bsp_timer_int_handler))
-.globl _lapic_ap_timer_int_handler
-_lapic_ap_timer_int_handler:
- lapic_intr(_ap_timer_int_handler)
+ENTRY(lapic_ap_timer_int_handler)
+ lapic_intr(_C_LABEL(ap_timer_int_handler))
#ifdef CONFIG_APIC_DEBUG
#define lapic_intr_dummy_handler(vect) \
pushl $vect; \
push $lapic_intr_dummy_handler_msg; \
- call _printf; \
+ call _C_LABEL(printf); \
1: jmp 1b; /* never return */
#define LAPIC_INTR_DUMMY_HANDLER(vect) \
.balign LAPIC_INTR_DUMMY_HANDLER_SIZE; \
lapic_intr_dummy_handler_##vect: lapic_intr_dummy_handler(vect)
-.globl _lapic_intr_dummy_handles_start
-_lapic_intr_dummy_handles_start:
-
-LAPIC_INTR_DUMMY_HANDLER(0)
-LAPIC_INTR_DUMMY_HANDLER(1)
-LAPIC_INTR_DUMMY_HANDLER(2)
-LAPIC_INTR_DUMMY_HANDLER(3)
-LAPIC_INTR_DUMMY_HANDLER(4)
-LAPIC_INTR_DUMMY_HANDLER(5)
-LAPIC_INTR_DUMMY_HANDLER(6)
-LAPIC_INTR_DUMMY_HANDLER(7)
-LAPIC_INTR_DUMMY_HANDLER(8)
-LAPIC_INTR_DUMMY_HANDLER(9)
-LAPIC_INTR_DUMMY_HANDLER(10)
-LAPIC_INTR_DUMMY_HANDLER(11)
-LAPIC_INTR_DUMMY_HANDLER(12)
-LAPIC_INTR_DUMMY_HANDLER(13)
-LAPIC_INTR_DUMMY_HANDLER(14)
-LAPIC_INTR_DUMMY_HANDLER(15)
-LAPIC_INTR_DUMMY_HANDLER(16)
-LAPIC_INTR_DUMMY_HANDLER(17)
-LAPIC_INTR_DUMMY_HANDLER(18)
-LAPIC_INTR_DUMMY_HANDLER(19)
-LAPIC_INTR_DUMMY_HANDLER(20)
-LAPIC_INTR_DUMMY_HANDLER(21)
-LAPIC_INTR_DUMMY_HANDLER(22)
-LAPIC_INTR_DUMMY_HANDLER(23)
-LAPIC_INTR_DUMMY_HANDLER(24)
-LAPIC_INTR_DUMMY_HANDLER(25)
-LAPIC_INTR_DUMMY_HANDLER(26)
-LAPIC_INTR_DUMMY_HANDLER(27)
-LAPIC_INTR_DUMMY_HANDLER(28)
-LAPIC_INTR_DUMMY_HANDLER(29)
-LAPIC_INTR_DUMMY_HANDLER(30)
-LAPIC_INTR_DUMMY_HANDLER(31)
-LAPIC_INTR_DUMMY_HANDLER(32)
-LAPIC_INTR_DUMMY_HANDLER(33)
-LAPIC_INTR_DUMMY_HANDLER(34)
-LAPIC_INTR_DUMMY_HANDLER(35)
-LAPIC_INTR_DUMMY_HANDLER(36)
-LAPIC_INTR_DUMMY_HANDLER(37)
-LAPIC_INTR_DUMMY_HANDLER(38)
-LAPIC_INTR_DUMMY_HANDLER(39)
-LAPIC_INTR_DUMMY_HANDLER(40)
-LAPIC_INTR_DUMMY_HANDLER(41)
-LAPIC_INTR_DUMMY_HANDLER(42)
-LAPIC_INTR_DUMMY_HANDLER(43)
-LAPIC_INTR_DUMMY_HANDLER(44)
-LAPIC_INTR_DUMMY_HANDLER(45)
-LAPIC_INTR_DUMMY_HANDLER(46)
-LAPIC_INTR_DUMMY_HANDLER(47)
-LAPIC_INTR_DUMMY_HANDLER(48)
-LAPIC_INTR_DUMMY_HANDLER(49)
-LAPIC_INTR_DUMMY_HANDLER(50)
-LAPIC_INTR_DUMMY_HANDLER(51)
-LAPIC_INTR_DUMMY_HANDLER(52)
-LAPIC_INTR_DUMMY_HANDLER(53)
-LAPIC_INTR_DUMMY_HANDLER(54)
-LAPIC_INTR_DUMMY_HANDLER(55)
-LAPIC_INTR_DUMMY_HANDLER(56)
-LAPIC_INTR_DUMMY_HANDLER(57)
-LAPIC_INTR_DUMMY_HANDLER(58)
-LAPIC_INTR_DUMMY_HANDLER(59)
-LAPIC_INTR_DUMMY_HANDLER(60)
-LAPIC_INTR_DUMMY_HANDLER(61)
-LAPIC_INTR_DUMMY_HANDLER(62)
-LAPIC_INTR_DUMMY_HANDLER(63)
-LAPIC_INTR_DUMMY_HANDLER(64)
-LAPIC_INTR_DUMMY_HANDLER(65)
-LAPIC_INTR_DUMMY_HANDLER(66)
-LAPIC_INTR_DUMMY_HANDLER(67)
-LAPIC_INTR_DUMMY_HANDLER(68)
-LAPIC_INTR_DUMMY_HANDLER(69)
-LAPIC_INTR_DUMMY_HANDLER(70)
-LAPIC_INTR_DUMMY_HANDLER(71)
-LAPIC_INTR_DUMMY_HANDLER(72)
-LAPIC_INTR_DUMMY_HANDLER(73)
-LAPIC_INTR_DUMMY_HANDLER(74)
-LAPIC_INTR_DUMMY_HANDLER(75)
-LAPIC_INTR_DUMMY_HANDLER(76)
-LAPIC_INTR_DUMMY_HANDLER(77)
-LAPIC_INTR_DUMMY_HANDLER(78)
-LAPIC_INTR_DUMMY_HANDLER(79)
-LAPIC_INTR_DUMMY_HANDLER(80)
-LAPIC_INTR_DUMMY_HANDLER(81)
-LAPIC_INTR_DUMMY_HANDLER(82)
-LAPIC_INTR_DUMMY_HANDLER(83)
-LAPIC_INTR_DUMMY_HANDLER(84)
-LAPIC_INTR_DUMMY_HANDLER(85)
-LAPIC_INTR_DUMMY_HANDLER(86)
-LAPIC_INTR_DUMMY_HANDLER(87)
-LAPIC_INTR_DUMMY_HANDLER(88)
-LAPIC_INTR_DUMMY_HANDLER(89)
-LAPIC_INTR_DUMMY_HANDLER(90)
-LAPIC_INTR_DUMMY_HANDLER(91)
-LAPIC_INTR_DUMMY_HANDLER(92)
-LAPIC_INTR_DUMMY_HANDLER(93)
-LAPIC_INTR_DUMMY_HANDLER(94)
-LAPIC_INTR_DUMMY_HANDLER(95)
-LAPIC_INTR_DUMMY_HANDLER(96)
-LAPIC_INTR_DUMMY_HANDLER(97)
-LAPIC_INTR_DUMMY_HANDLER(98)
-LAPIC_INTR_DUMMY_HANDLER(99)
-LAPIC_INTR_DUMMY_HANDLER(100)
-LAPIC_INTR_DUMMY_HANDLER(101)
-LAPIC_INTR_DUMMY_HANDLER(102)
-LAPIC_INTR_DUMMY_HANDLER(103)
-LAPIC_INTR_DUMMY_HANDLER(104)
-LAPIC_INTR_DUMMY_HANDLER(105)
-LAPIC_INTR_DUMMY_HANDLER(106)
-LAPIC_INTR_DUMMY_HANDLER(107)
-LAPIC_INTR_DUMMY_HANDLER(108)
-LAPIC_INTR_DUMMY_HANDLER(109)
-LAPIC_INTR_DUMMY_HANDLER(110)
-LAPIC_INTR_DUMMY_HANDLER(111)
-LAPIC_INTR_DUMMY_HANDLER(112)
-LAPIC_INTR_DUMMY_HANDLER(113)
-LAPIC_INTR_DUMMY_HANDLER(114)
-LAPIC_INTR_DUMMY_HANDLER(115)
-LAPIC_INTR_DUMMY_HANDLER(116)
-LAPIC_INTR_DUMMY_HANDLER(117)
-LAPIC_INTR_DUMMY_HANDLER(118)
-LAPIC_INTR_DUMMY_HANDLER(119)
-LAPIC_INTR_DUMMY_HANDLER(120)
-LAPIC_INTR_DUMMY_HANDLER(121)
-LAPIC_INTR_DUMMY_HANDLER(122)
-LAPIC_INTR_DUMMY_HANDLER(123)
-LAPIC_INTR_DUMMY_HANDLER(124)
-LAPIC_INTR_DUMMY_HANDLER(125)
-LAPIC_INTR_DUMMY_HANDLER(126)
-LAPIC_INTR_DUMMY_HANDLER(127)
-LAPIC_INTR_DUMMY_HANDLER(128)
-LAPIC_INTR_DUMMY_HANDLER(129)
-LAPIC_INTR_DUMMY_HANDLER(130)
-LAPIC_INTR_DUMMY_HANDLER(131)
-LAPIC_INTR_DUMMY_HANDLER(132)
-LAPIC_INTR_DUMMY_HANDLER(133)
-LAPIC_INTR_DUMMY_HANDLER(134)
-LAPIC_INTR_DUMMY_HANDLER(135)
-LAPIC_INTR_DUMMY_HANDLER(136)
-LAPIC_INTR_DUMMY_HANDLER(137)
-LAPIC_INTR_DUMMY_HANDLER(138)
-LAPIC_INTR_DUMMY_HANDLER(139)
-LAPIC_INTR_DUMMY_HANDLER(140)
-LAPIC_INTR_DUMMY_HANDLER(141)
-LAPIC_INTR_DUMMY_HANDLER(142)
-LAPIC_INTR_DUMMY_HANDLER(143)
-LAPIC_INTR_DUMMY_HANDLER(144)
-LAPIC_INTR_DUMMY_HANDLER(145)
-LAPIC_INTR_DUMMY_HANDLER(146)
-LAPIC_INTR_DUMMY_HANDLER(147)
-LAPIC_INTR_DUMMY_HANDLER(148)
-LAPIC_INTR_DUMMY_HANDLER(149)
-LAPIC_INTR_DUMMY_HANDLER(150)
-LAPIC_INTR_DUMMY_HANDLER(151)
-LAPIC_INTR_DUMMY_HANDLER(152)
-LAPIC_INTR_DUMMY_HANDLER(153)
-LAPIC_INTR_DUMMY_HANDLER(154)
-LAPIC_INTR_DUMMY_HANDLER(155)
-LAPIC_INTR_DUMMY_HANDLER(156)
-LAPIC_INTR_DUMMY_HANDLER(157)
-LAPIC_INTR_DUMMY_HANDLER(158)
-LAPIC_INTR_DUMMY_HANDLER(159)
-LAPIC_INTR_DUMMY_HANDLER(160)
-LAPIC_INTR_DUMMY_HANDLER(161)
-LAPIC_INTR_DUMMY_HANDLER(162)
-LAPIC_INTR_DUMMY_HANDLER(163)
-LAPIC_INTR_DUMMY_HANDLER(164)
-LAPIC_INTR_DUMMY_HANDLER(165)
-LAPIC_INTR_DUMMY_HANDLER(166)
-LAPIC_INTR_DUMMY_HANDLER(167)
-LAPIC_INTR_DUMMY_HANDLER(168)
-LAPIC_INTR_DUMMY_HANDLER(169)
-LAPIC_INTR_DUMMY_HANDLER(170)
-LAPIC_INTR_DUMMY_HANDLER(171)
-LAPIC_INTR_DUMMY_HANDLER(172)
-LAPIC_INTR_DUMMY_HANDLER(173)
-LAPIC_INTR_DUMMY_HANDLER(174)
-LAPIC_INTR_DUMMY_HANDLER(175)
-LAPIC_INTR_DUMMY_HANDLER(176)
-LAPIC_INTR_DUMMY_HANDLER(177)
-LAPIC_INTR_DUMMY_HANDLER(178)
-LAPIC_INTR_DUMMY_HANDLER(179)
-LAPIC_INTR_DUMMY_HANDLER(180)
-LAPIC_INTR_DUMMY_HANDLER(181)
-LAPIC_INTR_DUMMY_HANDLER(182)
-LAPIC_INTR_DUMMY_HANDLER(183)
-LAPIC_INTR_DUMMY_HANDLER(184)
-LAPIC_INTR_DUMMY_HANDLER(185)
-LAPIC_INTR_DUMMY_HANDLER(186)
-LAPIC_INTR_DUMMY_HANDLER(187)
-LAPIC_INTR_DUMMY_HANDLER(188)
-LAPIC_INTR_DUMMY_HANDLER(189)
-LAPIC_INTR_DUMMY_HANDLER(190)
-LAPIC_INTR_DUMMY_HANDLER(191)
-LAPIC_INTR_DUMMY_HANDLER(192)
-LAPIC_INTR_DUMMY_HANDLER(193)
-LAPIC_INTR_DUMMY_HANDLER(194)
-LAPIC_INTR_DUMMY_HANDLER(195)
-LAPIC_INTR_DUMMY_HANDLER(196)
-LAPIC_INTR_DUMMY_HANDLER(197)
-LAPIC_INTR_DUMMY_HANDLER(198)
-LAPIC_INTR_DUMMY_HANDLER(199)
-LAPIC_INTR_DUMMY_HANDLER(200)
-LAPIC_INTR_DUMMY_HANDLER(201)
-LAPIC_INTR_DUMMY_HANDLER(202)
-LAPIC_INTR_DUMMY_HANDLER(203)
-LAPIC_INTR_DUMMY_HANDLER(204)
-LAPIC_INTR_DUMMY_HANDLER(205)
-LAPIC_INTR_DUMMY_HANDLER(206)
-LAPIC_INTR_DUMMY_HANDLER(207)
-LAPIC_INTR_DUMMY_HANDLER(208)
-LAPIC_INTR_DUMMY_HANDLER(209)
-LAPIC_INTR_DUMMY_HANDLER(210)
-LAPIC_INTR_DUMMY_HANDLER(211)
-LAPIC_INTR_DUMMY_HANDLER(212)
-LAPIC_INTR_DUMMY_HANDLER(213)
-LAPIC_INTR_DUMMY_HANDLER(214)
-LAPIC_INTR_DUMMY_HANDLER(215)
-LAPIC_INTR_DUMMY_HANDLER(216)
-LAPIC_INTR_DUMMY_HANDLER(217)
-LAPIC_INTR_DUMMY_HANDLER(218)
-LAPIC_INTR_DUMMY_HANDLER(219)
-LAPIC_INTR_DUMMY_HANDLER(220)
-LAPIC_INTR_DUMMY_HANDLER(221)
-LAPIC_INTR_DUMMY_HANDLER(222)
-LAPIC_INTR_DUMMY_HANDLER(223)
-LAPIC_INTR_DUMMY_HANDLER(224)
-LAPIC_INTR_DUMMY_HANDLER(225)
-LAPIC_INTR_DUMMY_HANDLER(226)
-LAPIC_INTR_DUMMY_HANDLER(227)
-LAPIC_INTR_DUMMY_HANDLER(228)
-LAPIC_INTR_DUMMY_HANDLER(229)
-LAPIC_INTR_DUMMY_HANDLER(230)
-LAPIC_INTR_DUMMY_HANDLER(231)
-LAPIC_INTR_DUMMY_HANDLER(232)
-LAPIC_INTR_DUMMY_HANDLER(233)
-LAPIC_INTR_DUMMY_HANDLER(234)
-LAPIC_INTR_DUMMY_HANDLER(235)
-LAPIC_INTR_DUMMY_HANDLER(236)
-LAPIC_INTR_DUMMY_HANDLER(237)
-LAPIC_INTR_DUMMY_HANDLER(238)
-LAPIC_INTR_DUMMY_HANDLER(239)
-LAPIC_INTR_DUMMY_HANDLER(240)
-LAPIC_INTR_DUMMY_HANDLER(241)
-LAPIC_INTR_DUMMY_HANDLER(242)
-LAPIC_INTR_DUMMY_HANDLER(243)
-LAPIC_INTR_DUMMY_HANDLER(244)
-LAPIC_INTR_DUMMY_HANDLER(245)
-LAPIC_INTR_DUMMY_HANDLER(246)
-LAPIC_INTR_DUMMY_HANDLER(247)
-LAPIC_INTR_DUMMY_HANDLER(248)
-LAPIC_INTR_DUMMY_HANDLER(249)
-LAPIC_INTR_DUMMY_HANDLER(250)
-LAPIC_INTR_DUMMY_HANDLER(251)
-LAPIC_INTR_DUMMY_HANDLER(252)
-LAPIC_INTR_DUMMY_HANDLER(253)
-LAPIC_INTR_DUMMY_HANDLER(254)
-LAPIC_INTR_DUMMY_HANDLER(255)
-
-.globl _lapic_intr_dummy_handles_end
-_lapic_intr_dummy_handles_end:
+LABEL(lapic_intr_dummy_handles_start)
+ LAPIC_INTR_DUMMY_HANDLER(0)
+ LAPIC_INTR_DUMMY_HANDLER(1)
+ LAPIC_INTR_DUMMY_HANDLER(2)
+ LAPIC_INTR_DUMMY_HANDLER(3)
+ LAPIC_INTR_DUMMY_HANDLER(4)
+ LAPIC_INTR_DUMMY_HANDLER(5)
+ LAPIC_INTR_DUMMY_HANDLER(6)
+ LAPIC_INTR_DUMMY_HANDLER(7)
+ LAPIC_INTR_DUMMY_HANDLER(8)
+ LAPIC_INTR_DUMMY_HANDLER(9)
+ LAPIC_INTR_DUMMY_HANDLER(10)
+ LAPIC_INTR_DUMMY_HANDLER(11)
+ LAPIC_INTR_DUMMY_HANDLER(12)
+ LAPIC_INTR_DUMMY_HANDLER(13)
+ LAPIC_INTR_DUMMY_HANDLER(14)
+ LAPIC_INTR_DUMMY_HANDLER(15)
+ LAPIC_INTR_DUMMY_HANDLER(16)
+ LAPIC_INTR_DUMMY_HANDLER(17)
+ LAPIC_INTR_DUMMY_HANDLER(18)
+ LAPIC_INTR_DUMMY_HANDLER(19)
+ LAPIC_INTR_DUMMY_HANDLER(20)
+ LAPIC_INTR_DUMMY_HANDLER(21)
+ LAPIC_INTR_DUMMY_HANDLER(22)
+ LAPIC_INTR_DUMMY_HANDLER(23)
+ LAPIC_INTR_DUMMY_HANDLER(24)
+ LAPIC_INTR_DUMMY_HANDLER(25)
+ LAPIC_INTR_DUMMY_HANDLER(26)
+ LAPIC_INTR_DUMMY_HANDLER(27)
+ LAPIC_INTR_DUMMY_HANDLER(28)
+ LAPIC_INTR_DUMMY_HANDLER(29)
+ LAPIC_INTR_DUMMY_HANDLER(30)
+ LAPIC_INTR_DUMMY_HANDLER(31)
+ LAPIC_INTR_DUMMY_HANDLER(32)
+ LAPIC_INTR_DUMMY_HANDLER(33)
+ LAPIC_INTR_DUMMY_HANDLER(34)
+ LAPIC_INTR_DUMMY_HANDLER(35)
+ LAPIC_INTR_DUMMY_HANDLER(36)
+ LAPIC_INTR_DUMMY_HANDLER(37)
+ LAPIC_INTR_DUMMY_HANDLER(38)
+ LAPIC_INTR_DUMMY_HANDLER(39)
+ LAPIC_INTR_DUMMY_HANDLER(40)
+ LAPIC_INTR_DUMMY_HANDLER(41)
+ LAPIC_INTR_DUMMY_HANDLER(42)
+ LAPIC_INTR_DUMMY_HANDLER(43)
+ LAPIC_INTR_DUMMY_HANDLER(44)
+ LAPIC_INTR_DUMMY_HANDLER(45)
+ LAPIC_INTR_DUMMY_HANDLER(46)
+ LAPIC_INTR_DUMMY_HANDLER(47)
+ LAPIC_INTR_DUMMY_HANDLER(48)
+ LAPIC_INTR_DUMMY_HANDLER(49)
+ LAPIC_INTR_DUMMY_HANDLER(50)
+ LAPIC_INTR_DUMMY_HANDLER(51)
+ LAPIC_INTR_DUMMY_HANDLER(52)
+ LAPIC_INTR_DUMMY_HANDLER(53)
+ LAPIC_INTR_DUMMY_HANDLER(54)
+ LAPIC_INTR_DUMMY_HANDLER(55)
+ LAPIC_INTR_DUMMY_HANDLER(56)
+ LAPIC_INTR_DUMMY_HANDLER(57)
+ LAPIC_INTR_DUMMY_HANDLER(58)
+ LAPIC_INTR_DUMMY_HANDLER(59)
+ LAPIC_INTR_DUMMY_HANDLER(60)
+ LAPIC_INTR_DUMMY_HANDLER(61)
+ LAPIC_INTR_DUMMY_HANDLER(62)
+ LAPIC_INTR_DUMMY_HANDLER(63)
+ LAPIC_INTR_DUMMY_HANDLER(64)
+ LAPIC_INTR_DUMMY_HANDLER(65)
+ LAPIC_INTR_DUMMY_HANDLER(66)
+ LAPIC_INTR_DUMMY_HANDLER(67)
+ LAPIC_INTR_DUMMY_HANDLER(68)
+ LAPIC_INTR_DUMMY_HANDLER(69)
+ LAPIC_INTR_DUMMY_HANDLER(70)
+ LAPIC_INTR_DUMMY_HANDLER(71)
+ LAPIC_INTR_DUMMY_HANDLER(72)
+ LAPIC_INTR_DUMMY_HANDLER(73)
+ LAPIC_INTR_DUMMY_HANDLER(74)
+ LAPIC_INTR_DUMMY_HANDLER(75)
+ LAPIC_INTR_DUMMY_HANDLER(76)
+ LAPIC_INTR_DUMMY_HANDLER(77)
+ LAPIC_INTR_DUMMY_HANDLER(78)
+ LAPIC_INTR_DUMMY_HANDLER(79)
+ LAPIC_INTR_DUMMY_HANDLER(80)
+ LAPIC_INTR_DUMMY_HANDLER(81)
+ LAPIC_INTR_DUMMY_HANDLER(82)
+ LAPIC_INTR_DUMMY_HANDLER(83)
+ LAPIC_INTR_DUMMY_HANDLER(84)
+ LAPIC_INTR_DUMMY_HANDLER(85)
+ LAPIC_INTR_DUMMY_HANDLER(86)
+ LAPIC_INTR_DUMMY_HANDLER(87)
+ LAPIC_INTR_DUMMY_HANDLER(88)
+ LAPIC_INTR_DUMMY_HANDLER(89)
+ LAPIC_INTR_DUMMY_HANDLER(90)
+ LAPIC_INTR_DUMMY_HANDLER(91)
+ LAPIC_INTR_DUMMY_HANDLER(92)
+ LAPIC_INTR_DUMMY_HANDLER(93)
+ LAPIC_INTR_DUMMY_HANDLER(94)
+ LAPIC_INTR_DUMMY_HANDLER(95)
+ LAPIC_INTR_DUMMY_HANDLER(96)
+ LAPIC_INTR_DUMMY_HANDLER(97)
+ LAPIC_INTR_DUMMY_HANDLER(98)
+ LAPIC_INTR_DUMMY_HANDLER(99)
+ LAPIC_INTR_DUMMY_HANDLER(100)
+ LAPIC_INTR_DUMMY_HANDLER(101)
+ LAPIC_INTR_DUMMY_HANDLER(102)
+ LAPIC_INTR_DUMMY_HANDLER(103)
+ LAPIC_INTR_DUMMY_HANDLER(104)
+ LAPIC_INTR_DUMMY_HANDLER(105)
+ LAPIC_INTR_DUMMY_HANDLER(106)
+ LAPIC_INTR_DUMMY_HANDLER(107)
+ LAPIC_INTR_DUMMY_HANDLER(108)
+ LAPIC_INTR_DUMMY_HANDLER(109)
+ LAPIC_INTR_DUMMY_HANDLER(110)
+ LAPIC_INTR_DUMMY_HANDLER(111)
+ LAPIC_INTR_DUMMY_HANDLER(112)
+ LAPIC_INTR_DUMMY_HANDLER(113)
+ LAPIC_INTR_DUMMY_HANDLER(114)
+ LAPIC_INTR_DUMMY_HANDLER(115)
+ LAPIC_INTR_DUMMY_HANDLER(116)
+ LAPIC_INTR_DUMMY_HANDLER(117)
+ LAPIC_INTR_DUMMY_HANDLER(118)
+ LAPIC_INTR_DUMMY_HANDLER(119)
+ LAPIC_INTR_DUMMY_HANDLER(120)
+ LAPIC_INTR_DUMMY_HANDLER(121)
+ LAPIC_INTR_DUMMY_HANDLER(122)
+ LAPIC_INTR_DUMMY_HANDLER(123)
+ LAPIC_INTR_DUMMY_HANDLER(124)
+ LAPIC_INTR_DUMMY_HANDLER(125)
+ LAPIC_INTR_DUMMY_HANDLER(126)
+ LAPIC_INTR_DUMMY_HANDLER(127)
+ LAPIC_INTR_DUMMY_HANDLER(128)
+ LAPIC_INTR_DUMMY_HANDLER(129)
+ LAPIC_INTR_DUMMY_HANDLER(130)
+ LAPIC_INTR_DUMMY_HANDLER(131)
+ LAPIC_INTR_DUMMY_HANDLER(132)
+ LAPIC_INTR_DUMMY_HANDLER(133)
+ LAPIC_INTR_DUMMY_HANDLER(134)
+ LAPIC_INTR_DUMMY_HANDLER(135)
+ LAPIC_INTR_DUMMY_HANDLER(136)
+ LAPIC_INTR_DUMMY_HANDLER(137)
+ LAPIC_INTR_DUMMY_HANDLER(138)
+ LAPIC_INTR_DUMMY_HANDLER(139)
+ LAPIC_INTR_DUMMY_HANDLER(140)
+ LAPIC_INTR_DUMMY_HANDLER(141)
+ LAPIC_INTR_DUMMY_HANDLER(142)
+ LAPIC_INTR_DUMMY_HANDLER(143)
+ LAPIC_INTR_DUMMY_HANDLER(144)
+ LAPIC_INTR_DUMMY_HANDLER(145)
+ LAPIC_INTR_DUMMY_HANDLER(146)
+ LAPIC_INTR_DUMMY_HANDLER(147)
+ LAPIC_INTR_DUMMY_HANDLER(148)
+ LAPIC_INTR_DUMMY_HANDLER(149)
+ LAPIC_INTR_DUMMY_HANDLER(150)
+ LAPIC_INTR_DUMMY_HANDLER(151)
+ LAPIC_INTR_DUMMY_HANDLER(152)
+ LAPIC_INTR_DUMMY_HANDLER(153)
+ LAPIC_INTR_DUMMY_HANDLER(154)
+ LAPIC_INTR_DUMMY_HANDLER(155)
+ LAPIC_INTR_DUMMY_HANDLER(156)
+ LAPIC_INTR_DUMMY_HANDLER(157)
+ LAPIC_INTR_DUMMY_HANDLER(158)
+ LAPIC_INTR_DUMMY_HANDLER(159)
+ LAPIC_INTR_DUMMY_HANDLER(160)
+ LAPIC_INTR_DUMMY_HANDLER(161)
+ LAPIC_INTR_DUMMY_HANDLER(162)
+ LAPIC_INTR_DUMMY_HANDLER(163)
+ LAPIC_INTR_DUMMY_HANDLER(164)
+ LAPIC_INTR_DUMMY_HANDLER(165)
+ LAPIC_INTR_DUMMY_HANDLER(166)
+ LAPIC_INTR_DUMMY_HANDLER(167)
+ LAPIC_INTR_DUMMY_HANDLER(168)
+ LAPIC_INTR_DUMMY_HANDLER(169)
+ LAPIC_INTR_DUMMY_HANDLER(170)
+ LAPIC_INTR_DUMMY_HANDLER(171)
+ LAPIC_INTR_DUMMY_HANDLER(172)
+ LAPIC_INTR_DUMMY_HANDLER(173)
+ LAPIC_INTR_DUMMY_HANDLER(174)
+ LAPIC_INTR_DUMMY_HANDLER(175)
+ LAPIC_INTR_DUMMY_HANDLER(176)
+ LAPIC_INTR_DUMMY_HANDLER(177)
+ LAPIC_INTR_DUMMY_HANDLER(178)
+ LAPIC_INTR_DUMMY_HANDLER(179)
+ LAPIC_INTR_DUMMY_HANDLER(180)
+ LAPIC_INTR_DUMMY_HANDLER(181)
+ LAPIC_INTR_DUMMY_HANDLER(182)
+ LAPIC_INTR_DUMMY_HANDLER(183)
+ LAPIC_INTR_DUMMY_HANDLER(184)
+ LAPIC_INTR_DUMMY_HANDLER(185)
+ LAPIC_INTR_DUMMY_HANDLER(186)
+ LAPIC_INTR_DUMMY_HANDLER(187)
+ LAPIC_INTR_DUMMY_HANDLER(188)
+ LAPIC_INTR_DUMMY_HANDLER(189)
+ LAPIC_INTR_DUMMY_HANDLER(190)
+ LAPIC_INTR_DUMMY_HANDLER(191)
+ LAPIC_INTR_DUMMY_HANDLER(192)
+ LAPIC_INTR_DUMMY_HANDLER(193)
+ LAPIC_INTR_DUMMY_HANDLER(194)
+ LAPIC_INTR_DUMMY_HANDLER(195)
+ LAPIC_INTR_DUMMY_HANDLER(196)
+ LAPIC_INTR_DUMMY_HANDLER(197)
+ LAPIC_INTR_DUMMY_HANDLER(198)
+ LAPIC_INTR_DUMMY_HANDLER(199)
+ LAPIC_INTR_DUMMY_HANDLER(200)
+ LAPIC_INTR_DUMMY_HANDLER(201)
+ LAPIC_INTR_DUMMY_HANDLER(202)
+ LAPIC_INTR_DUMMY_HANDLER(203)
+ LAPIC_INTR_DUMMY_HANDLER(204)
+ LAPIC_INTR_DUMMY_HANDLER(205)
+ LAPIC_INTR_DUMMY_HANDLER(206)
+ LAPIC_INTR_DUMMY_HANDLER(207)
+ LAPIC_INTR_DUMMY_HANDLER(208)
+ LAPIC_INTR_DUMMY_HANDLER(209)
+ LAPIC_INTR_DUMMY_HANDLER(210)
+ LAPIC_INTR_DUMMY_HANDLER(211)
+ LAPIC_INTR_DUMMY_HANDLER(212)
+ LAPIC_INTR_DUMMY_HANDLER(213)
+ LAPIC_INTR_DUMMY_HANDLER(214)
+ LAPIC_INTR_DUMMY_HANDLER(215)
+ LAPIC_INTR_DUMMY_HANDLER(216)
+ LAPIC_INTR_DUMMY_HANDLER(217)
+ LAPIC_INTR_DUMMY_HANDLER(218)
+ LAPIC_INTR_DUMMY_HANDLER(219)
+ LAPIC_INTR_DUMMY_HANDLER(220)
+ LAPIC_INTR_DUMMY_HANDLER(221)
+ LAPIC_INTR_DUMMY_HANDLER(222)
+ LAPIC_INTR_DUMMY_HANDLER(223)
+ LAPIC_INTR_DUMMY_HANDLER(224)
+ LAPIC_INTR_DUMMY_HANDLER(225)
+ LAPIC_INTR_DUMMY_HANDLER(226)
+ LAPIC_INTR_DUMMY_HANDLER(227)
+ LAPIC_INTR_DUMMY_HANDLER(228)
+ LAPIC_INTR_DUMMY_HANDLER(229)
+ LAPIC_INTR_DUMMY_HANDLER(230)
+ LAPIC_INTR_DUMMY_HANDLER(231)
+ LAPIC_INTR_DUMMY_HANDLER(232)
+ LAPIC_INTR_DUMMY_HANDLER(233)
+ LAPIC_INTR_DUMMY_HANDLER(234)
+ LAPIC_INTR_DUMMY_HANDLER(235)
+ LAPIC_INTR_DUMMY_HANDLER(236)
+ LAPIC_INTR_DUMMY_HANDLER(237)
+ LAPIC_INTR_DUMMY_HANDLER(238)
+ LAPIC_INTR_DUMMY_HANDLER(239)
+ LAPIC_INTR_DUMMY_HANDLER(240)
+ LAPIC_INTR_DUMMY_HANDLER(241)
+ LAPIC_INTR_DUMMY_HANDLER(242)
+ LAPIC_INTR_DUMMY_HANDLER(243)
+ LAPIC_INTR_DUMMY_HANDLER(244)
+ LAPIC_INTR_DUMMY_HANDLER(245)
+ LAPIC_INTR_DUMMY_HANDLER(246)
+ LAPIC_INTR_DUMMY_HANDLER(247)
+ LAPIC_INTR_DUMMY_HANDLER(248)
+ LAPIC_INTR_DUMMY_HANDLER(249)
+ LAPIC_INTR_DUMMY_HANDLER(250)
+ LAPIC_INTR_DUMMY_HANDLER(251)
+ LAPIC_INTR_DUMMY_HANDLER(252)
+ LAPIC_INTR_DUMMY_HANDLER(253)
+ LAPIC_INTR_DUMMY_HANDLER(254)
+ LAPIC_INTR_DUMMY_HANDLER(255)
+LABEL(lapic_intr_dummy_handles_end)
#endif /* CONFIG_APIC_DEBUG */
-.text
+#include <machine/asm.h>
#define LD_ST_REG(reg) ;\
-.globl _ld_##reg ;\
-.globl _st_##reg ;\
- ;\
-_ld_##reg: ;\
+ENTRY(ld_##reg) ;\
mov 4(%esp), %eax ;\
mov %eax, %reg ;\
ret ;\
;\
-_st_##reg: ;\
+ENTRY(st_##reg) ;\
mov %reg, %eax ;\
ret
/* inb() - Input one byte Author: Kees J. Bot */
/* 18 Mar 1996 */
/* unsigned inb(U16_t port); */
+#include <machine/asm.h>
-.text
-.globl _inb
-_inb:
+ENTRY(inb)
push %ebp
movl %esp, %ebp
movl 8(%ebp), %edx /* port */
/* inl() - Input one dword Author: Kees J. Bot */
/* 18 Mar 1996 */
/* unsigned inl(U16_t port); */
+#include <machine/asm.h>
-.text
-.globl _inl
-_inl:
+ENTRY(inl)
push %ebp
movl %esp, %ebp
movl 8(%ebp), %edx /* port */
/* 18 Mar 1996 */
/* void intr_disable(void); */
/* void intr_enable(void); */
+#include <machine/asm.h>
-.text
-.globl _intr_disable
-_intr_disable:
+ENTRY(intr_disable)
cli
ret
-.globl _intr_enable
-_intr_enable:
+ENTRY(intr_enable)
sti
ret
/* inw() - Input one word Author: Kees J. Bot */
/* 18 Mar 1996 */
/* unsigned inw(U16_t port); */
+#include <machine/asm.h>
-.text
-.globl _inw
-_inw:
+ENTRY(inw)
push %ebp
movl %esp, %ebp
movl 8(%ebp), %edx /* port */
/* outb() - Output one byte Author: Kees J. Bot */
/* 18 Mar 1996 */
/* void outb(U16_t port, U8_t value); */
+#include <machine/asm.h>
-.text
-.globl _outb
-_outb:
+ENTRY(outb)
push %ebp
movl %esp, %ebp
movl 8(%ebp), %edx /* port */
/* outl() - Output one dword Author: Kees J. Bot */
/* 18 Mar 1996 */
/* void outl(U16_t port, u32_t value); */
+#include <machine/asm.h>
-.text
-.globl _outl
-_outl:
+ENTRY(outl)
push %ebp
movl %esp, %ebp
movl 8(%ebp), %edx /* port */
/* outw() - Output one word Author: Kees J. Bot */
/* 18 Mar 1996 */
/* void outw(U16_t port, U16_t value); */
+#include <machine/asm.h>
-.text
-.globl _outw
-_outw:
+ENTRY(outw)
push %ebp
movl %esp, %ebp
movl 8(%ebp), %edx /* port */
#include <minix/config.h>
#include <minix/const.h>
+#include <machine/asm.h>
#include <machine/interrupt.h>
#include <i386/vm.h>
#include "archconst.h"
/*
* This file contains a number of assembly code utility routines needed by the
- * kernel. They are:
+ * kernel.
*/
-.globl _monitor/* exit Minix and return to the monitor */
-.globl _int86 /* let the monitor make an 8086 interrupt call */
-#ifdef __ACK__
-.globl _exit /* dummy for library routines */
-.globl __exit /* dummy for library routines */
-.globl ___exit /* dummy for library routines */
-#endif
-.globl ___main /* dummy for GCC */
-.globl _phys_insw /* transfer data from (disk controller) port to memory */
-.globl _phys_insb /* likewise byte by byte */
-.globl _phys_outsw /* transfer data from memory to (disk controller) port */
-.globl _phys_outsb /* likewise byte by byte */
-.globl _phys_copy /* copy data from anywhere to anywhere in memory */
-.globl _phys_copy_fault /* phys_copy pagefault */
-.globl _phys_copy_fault_in_kernel /* phys_copy pagefault in kernel */
-.globl _phys_memset /* write pattern anywhere in memory */
-.globl _mem_rdw /* copy one word from [segment:offset] */
-.globl _reset /* reset the system */
-.globl _halt_cpu/* halts the current cpu when idle */
-.globl _read_cpu_flags /* read the cpu flags */
-.globl _read_cr0 /* read cr0 */
-.globl _read_cr2 /* read cr2 */
-.globl _getcr3val
-.globl _write_cr0 /* write a value in cr0 */
-.globl _read_cr3
-.globl _write_cr3
-.globl _read_cr4
-.globl _write_cr4
-
-.globl _catch_pagefaults
-.globl _read_ds
-.globl _read_cs
-.globl _read_ss
-.globl _idt_reload /* reload idt when returning to monitor. */
-
-.globl _fninit /* non-waiting FPU initialization */
-.globl _fnstsw /* store status word (non-waiting) */
-.globl _fnstcw /* store control word (non-waiting) */
-.globl _fxsave
-.globl _fnsave
-.globl _fxrstor
-.globl _frstor
-.globl _clts
/*
* The routines only guarantee to preserve the registers the C compiler
* direction bit in the flags).
*/
-.text
/*===========================================================================*/
/* monitor */
/*===========================================================================*/
/* PUBLIC void monitor(); */
-/* Return to the monitor. */
-
-_monitor:
- movl _mon_sp, %esp /* restore monitor stack pointer */
+/* exit Minix and return to the monitor */
+ENTRY(monitor)
+ movl _C_LABEL(mon_sp), %esp /* restore monitor stack pointer */
movw $SS_SELECTOR, %dx /* monitor data segment */
mov %dx, %ds
mov %dx, %es
/* int86 */
/*===========================================================================*/
/* PUBLIC void int86(); */
-_int86:
- cmpb $0, _mon_return /* is the monitor there? */
+/* let the monitor make an 8086 interrupt call */
+ENTRY(int86)
+ cmpb $0, _C_LABEL(mon_return) /* is the monitor there? */
jne 0f
movb $0x01, %ah /* an int 13 error seems appropriate */
- movb %ah, _reg86+0 /* reg86.w.f = 1 (set carry flag) */
- movb %ah, _reg86+13 /* reg86.b.ah = 0x01 = "invalid command" */
+ movb %ah, _C_LABEL(reg86)+0 /* reg86.w.f = 1 (set carry flag) */
+ movb %ah, _C_LABEL(reg86)+13 /* reg86.b.ah = 0x01 = "invalid command" */
ret
0:
push %ebp /* save C registers */
movb %al, %ah
inb $INT_CTLMASK
push %eax /* save interrupt masks */
- movl _irq_use, %eax /* map of in-use IRQ's */
+ movl _C_LABEL(irq_use), %eax /* map of in-use IRQ's */
and $~(1<<CLOCK_IRQ), %eax /* keep the clock ticking */
outb $INT_CTLMASK /* enable all unused IRQ's and vv. */
movb %ah, %al
mov $SS_SELECTOR, %eax /* monitor data segment */
mov %ax, %ss
- xchgl _mon_sp, %esp /* switch stacks */
- push _reg86+36 /* parameters used in INT call */
- push _reg86+32
- push _reg86+28
- push _reg86+24
- push _reg86+20
- push _reg86+16
- push _reg86+12
- push _reg86+8
- push _reg86+4
- push _reg86+0
+ xchgl _C_LABEL(mon_sp), %esp /* switch stacks */
+ push _C_LABEL(reg86)+36 /* parameters used in INT call */
+ push _C_LABEL(reg86)+32
+ push _C_LABEL(reg86)+28
+ push _C_LABEL(reg86)+24
+ push _C_LABEL(reg86)+20
+ push _C_LABEL(reg86)+16
+ push _C_LABEL(reg86)+12
+ push _C_LABEL(reg86)+8
+ push _C_LABEL(reg86)+4
+ push _C_LABEL(reg86)+0
mov %ax, %ds /* remaining data selectors */
mov %ax, %es
mov %ax, %fs
push $return /* kernel return address and selector */
ljmpw *20+2*4+10*4+2*4(%esp)
return:
- pop _reg86+0
- pop _reg86+4
- pop _reg86+8
- pop _reg86+12
- pop _reg86+16
- pop _reg86+20
- pop _reg86+24
- pop _reg86+28
- pop _reg86+32
- pop _reg86+36
- lgdt _gdt+GDT_SELECTOR /* reload global descriptor table */
+ pop _C_LABEL(reg86)+0
+ pop _C_LABEL(reg86)+4
+ pop _C_LABEL(reg86)+8
+ pop _C_LABEL(reg86)+12
+ pop _C_LABEL(reg86)+16
+ pop _C_LABEL(reg86)+20
+ pop _C_LABEL(reg86)+24
+ pop _C_LABEL(reg86)+28
+ pop _C_LABEL(reg86)+32
+ pop _C_LABEL(reg86)+36
+ lgdt _C_LABEL(gdt)+GDT_SELECTOR /* reload global descriptor table */
ljmp $CS_SELECTOR, $csinit
csinit:
mov $DS_SELECTOR, %eax
mov %ax, %fs
mov %ax, %gs
mov %ax, %ss
- xchgl _mon_sp, %esp /* unswitch stacks */
- lidt _gdt+IDT_SELECTOR /* reload interrupt descriptor table */
+ xchgl _C_LABEL(mon_sp), %esp /* unswitch stacks */
+ lidt _C_LABEL(gdt)+IDT_SELECTOR /* reload interrupt descriptor table */
#ifdef CONFIG_APIC
cmpl $0x0, lapic_addr
shl $3, %eax
mov %eax, %ebx
add $TSS_SELECTOR, %eax
- addl _gdt+DESC_ACCESS, %eax
+ addl _C_LABEL(gdt)+DESC_ACCESS, %eax
and $~0x02, %eax
ltr %bx /* set TSS register */
outb $INT2_CTLMASK
6:
- addl %ecx, _lost_ticks /* record lost clock ticks */
+ addl %ecx, _C_LABEL(lost_ticks) /* record lost clock ticks */
popf /* restore flags */
pop %ebx /* restore C registers */
* GNU CC likes to call ___main from main() for nonobvious reasons.
*/
#ifdef __ACK__
-_exit:
-__exit:
-___exit:
+ENTRY(exit)
+ENTRY(_exit)
+ENTRY(__exit)
sti
- jmp ___exit
+ jmp _C_LABEL(__exit)
#endif
-___main:
+ENTRY(__main)
ret
* PUBLIC void phys_insw(Port_t port, phys_bytes buf, size_t count);
* Input an array from an I/O port. Absolute address version of insw().
*/
-
-_phys_insw:
+/* transfer data from (disk controller) port to memory */
+ENTRY(phys_insw)
push %ebp
mov %esp, %ebp
cld
* PUBLIC void phys_insb(Port_t port, phys_bytes buf, size_t count);
* Input an array from an I/O port. Absolute address version of insb().
*/
-
-_phys_insb:
+/* transfer data from (disk controller) port to memory byte by byte */
+ENTRY(phys_insb)
push %ebp
mov %esp, %ebp
cld
* PUBLIC void phys_outsw(Port_t port, phys_bytes buf, size_t count);
* Output an array to an I/O port. Absolute address version of outsw().
*/
-
-.balign 16
-_phys_outsw:
+/* transfer data from memory to (disk controller) port */
+ENTRY(phys_outsw)
push %ebp
mov %esp, %ebp
cld
* PUBLIC void phys_outsb(Port_t port, phys_bytes buf, size_t count);
* Output an array to an I/O port. Absolute address version of outsb().
*/
-
-.balign 16
-_phys_outsb:
+/* transfer data from memory to (disk controller) port byte by byte */
+ENTRY(phys_outsb)
push %ebp
mov %esp, %ebp
cld
/*
* PUBLIC phys_bytes phys_copy(phys_bytes source, phys_bytes destination,
* phys_bytes bytecount);
- * Copy a block of physical memory.
+ * Copy a block of data from anywhere to anywhere in physical memory.
*/
-
PC_ARGS = 4+4+4+4 /* 4 + 4 + 4 */
/* es edi esi eip src dst len */
-
-.balign 16
-_phys_copy:
+ENTRY(phys_copy)
cld
push %esi
push %edi
rep movsb %es:(%esi), %es:(%edi)
mov $0, %eax /* 0 means: no fault */
-_phys_copy_fault: /* kernel can send us here */
+LABEL(phys_copy_fault) /* kernel can send us here */
pop %es
pop %edi
pop %esi
ret
-_phys_copy_fault_in_kernel: /* kernel can send us here */
+LABEL(phys_copy_fault_in_kernel) /* kernel can send us here */
pop %es
pop %edi
pop %esi
* wrong pointers from userspace and the caller should return an error to
* userspace as if wrong values or request were passed to the kernel
*/
-
-.balign 16
-.globl _copy_msg_from_user
-_copy_msg_from_user:
+ENTRY(copy_msg_from_user)
push %gs
mov 8(%esp), %eax
mov %gs:8*4(%ecx), %eax
mov %eax, 8*4(%edx)
-.globl ___copy_msg_from_user_end
-___copy_msg_from_user_end:
+LABEL(__copy_msg_from_user_end)
pop %gs
*
* All the other copy_msg_from_user() comments apply here as well!
*/
-
-.balign 16
-.globl _copy_msg_to_user
-_copy_msg_to_user:
+ENTRY(copy_msg_to_user)
push %gs
mov 8(%esp), %eax
mov 8*4(%ecx), %eax
mov %eax, %gs:8*4(%edx)
-.globl ___copy_msg_to_user_end
-___copy_msg_to_user_end:
+LABEL(__copy_msg_to_user_end)
pop %gs
* called from has to handle this situation. The exception handler redirect us
* here to continue, clean up and report the error
*/
-.balign 16
-.globl ___user_copy_msg_pointer_failure
-___user_copy_msg_pointer_failure:
+ENTRY(__user_copy_msg_pointer_failure)
pop %gs
movl $-1, %eax
* phys_bytes bytecount);
* Fill a block of physical memory with pattern.
*/
-
-.balign 16
-_phys_memset:
+ENTRY(phys_memset)
push %ebp
mov %esp, %ebp
push %esi
* PUBLIC u16_t mem_rdw(U16_t segment, u16_t *offset);
* Load and return word at far pointer segment:offset.
*/
-
-.balign 16
-_mem_rdw:
+ENTRY(mem_rdw)
mov %ds, %cx
mov 4(%esp), %ds
mov 4+4(%esp), %eax /* offset */
* PUBLIC void reset();
* Reset the system by loading IDT with offset 0 and interrupting.
*/
-
-_reset:
+ENTRY(reset)
lidt idt_zero
int $3 /* anything goes, the 386 will not like it */
.data
* reanables interrupts and puts the cpu in the halts state. Once an interrupt
* is handled the execution resumes by disabling interrupts and continues
*/
-_halt_cpu:
+ENTRY(halt_cpu)
sti
hlt /* interrupts enabled only after this instruction is executed! */
/*
* PUBLIC unsigned long read_cpu_flags(void);
* Read CPU status flags from C.
*/
-.balign 16
-_read_cpu_flags:
+ENTRY(read_cpu_flags)
pushf
mov (%esp), %eax
add $4, %esp
ret
-_read_ds:
+ENTRY(read_ds)
mov $0, %eax
mov %ds, %ax
ret
-_read_cs:
+ENTRY(read_cs)
mov $0, %eax
mov %cs, %ax
ret
-_read_ss:
+ENTRY(read_ss)
mov $0, %eax
mov %ss, %ax
ret
-
/*===========================================================================*/
/* fpu_routines */
/*===========================================================================*/
-_fninit:
+
+/* non-waiting FPU initialization */
+ENTRY(fninit)
fninit
ret
-_clts:
+ENTRY(clts)
clts
ret
-_fnstsw:
+/* store status word (non-waiting) */
+ENTRY(fnstsw)
xor %eax, %eax
/* DO NOT CHANGE THE OPERAND!!! gas2ack does not handle it yet */
fnstsw %ax
ret
-_fnstcw:
+/* store control word (non-waiting) */
+ENTRY(fnstcw)
push %eax
mov 8(%esp), %eax
/*===========================================================================*/
/* fxsave */
/*===========================================================================*/
-_fxsave:
+ENTRY(fxsave)
mov 4(%esp), %eax
fxsave (%eax) /* Do not change the operand! (gas2ack) */
ret
/*===========================================================================*/
/* fnsave */
/*===========================================================================*/
-_fnsave:
+ENTRY(fnsave)
mov 4(%esp), %eax
fnsave (%eax) /* Do not change the operand! (gas2ack) */
fwait /* required for compatibility with processors prior pentium */
/*===========================================================================*/
/* fxrstor */
/*===========================================================================*/
-_fxrstor:
+ENTRY(fxrstor)
mov 4(%esp), %eax
fxrstor (%eax) /* Do not change the operand! (gas2ack) */
ret
/*===========================================================================*/
/* frstor */
/*===========================================================================*/
-_frstor:
+ENTRY(frstor)
mov 4(%esp), %eax
frstor (%eax) /* Do not change the operand! (gas2ack) */
ret
/* read_cr0 */
/*===========================================================================*/
/* PUBLIC unsigned long read_cr0(void); */
-_read_cr0:
+ENTRY(read_cr0)
push %ebp
mov %esp, %ebp
mov %cr0, %eax
/* write_cr0 */
/*===========================================================================*/
/* PUBLIC void write_cr0(unsigned long value); */
-_write_cr0:
+ENTRY(write_cr0)
push %ebp
mov %esp, %ebp
mov 8(%ebp), %eax
/* read_cr2 */
/*===========================================================================*/
/* PUBLIC reg_t read_cr2(void); */
-_read_cr2:
+ENTRY(read_cr2)
mov %cr2, %eax
ret
/* read_cr3 */
/*===========================================================================*/
/* PUBLIC unsigned long read_cr3(void); */
-_read_cr3:
+ENTRY(read_cr3)
push %ebp
mov %esp, %ebp
/* read_cr4 */
/*===========================================================================*/
/* PUBLIC unsigned long read_cr4(void); */
-_read_cr4:
+ENTRY(read_cr4)
push %ebp
mov %esp, %ebp
/* write_cr4 */
/*===========================================================================*/
/* PUBLIC void write_cr4(unsigned long value); */
-_write_cr4:
+ENTRY(write_cr4)
push %ebp
mov %esp, %ebp
mov 8(%ebp), %eax
/* write_cr3 */
/*===========================================================================*/
/* PUBLIC void write_cr3(unsigned long value); */
-_write_cr3:
+ENTRY(write_cr3)
push %ebp
mov %esp, %ebp
mov 8(%ebp), %eax
/* getcr3val */
/*===========================================================================*/
/* PUBLIC unsigned long getcr3val(void); */
-_getcr3val:
+ENTRY(getcr3val)
mov %cr3, %eax
ret
*
* void ia32_msr_read(u32_t reg, u32_t * hi, u32_t * lo)
*/
-.globl _ia32_msr_read
-_ia32_msr_read:
+ENTRY(ia32_msr_read)
push %ebp
mov %esp, %ebp
*
* void ia32_msr_write(u32_t reg, u32_t hi, u32_t lo)
*/
-.globl _ia32_msr_write
-_ia32_msr_write:
+ENTRY(ia32_msr_write)
push %ebp
mov %esp, %ebp
/* idt_reload */
/*===========================================================================*/
/* PUBLIC void idt_reload (void); */
-.balign 16
-_idt_reload:
- lidt _gdt+IDT_SELECTOR /* reload interrupt descriptor table */
+/* reload idt when returning to monitor. */
+ENTRY(idt_reload)
+ lidt _C_LABEL(gdt)+IDT_SELECTOR /* reload interrupt descriptor table */
ret
/*
mov reg, %ax ;\
mov %ax, reg ;
-.globl _reload_ds
-_reload_ds:
+ENTRY(reload_ds)
RELOAD_SEG_REG(%ds)
ret
* same value in which case it would only result in an extra TLB flush which is
* not desirable
*/
- .balign 16
-.globl _switch_address_space
-_switch_address_space:
-
+ENTRY(switch_address_space)
/* read the process pointer */
mov 4(%esp), %edx
/* enable process' segment descriptors */
cmp %ecx, %eax
je 0f
mov %eax, %cr3
- mov %edx, _ptproc
+ mov %edx, _C_LABEL(ptproc)
0:
ret
/*===========================================================================*/
/* PUBLIC void poweroff(); */
/* Jump to 16-bit poweroff code */
-.globl _poweroff_jmp
-_poweroff_jmp:
+ENTRY(poweroff_jmp)
cli
/* Make real mode descriptor */
- mov $(_gdt + SS_SELECTOR), %edi
+ mov $(_C_LABEL(gdt) + SS_SELECTOR), %edi
mov $0x100, %eax
movw %ax, 2(%edi)
shr $16, %eax
#include <minix/config.h>
#include <minix/const.h>
+#include <machine/asm.h>
#include <machine/interrupt.h>
#include "archconst.h"
#include "kernel/const.h"
/*
* This file contains a number of 16-bit assembly code utility routines needed by the
- * kernel. They are:
+ * kernel.
*/
-.globl _poweroff16 /* enter real mode */
-.globl _poweroff16_end
-
.text
.code16
/*===========================================================================*/
/* PUBLIC void poweroff16(); */
/* Power down system */
-_poweroff16:
+ENTRY(poweroff16)
/* Assume eax is already set to required value of cr0*/
.byte 0x0F,0x22,0xC0 /* mov %cr0,%eax */
- ljmp $0,$(BIOS_POWEROFF_ENTRY + real_mode - _poweroff16)
+ ljmp $0,$(BIOS_POWEROFF_ENTRY + real_mode - _C_LABEL(poweroff16))
real_mode:
mov $((BIOS_POWEROFF_ENTRY >> 4) + 0x200),%ax
mov %ax, %ds
mov $0x07, %bx
mov $POWEROFF_MSG_LEN, %cx
mov $0x0300, %dx
- mov $(poweroff_msg - _poweroff16), %bp
+ mov $(poweroff_msg - _C_LABEL(poweroff16)), %bp
int $0x10
0: hlt
jmp 0b
jnz kb_wait
ret
/*mark the end for copy*/
-_poweroff16_end:
+LABEL(poweroff16_end)
#include <minix/config.h>
#include <minix/const.h>
#include <minix/com.h>
+#include <machine/asm.h>
#include <machine/interrupt.h>
#include "archconst.h"
#include "kernel/const.h"
/* Selected 386 tss offsets. */
#define TSS3_S_SP0 4
-/*
- * Exported functions
- * Note: in assembly language the .define statement applied to a function name
- * is loosely equivalent to a prototype in C code -- it makes it possible to
- * link to an entity declared in the assembly code but does not create
- * the entity.
- */
-
-.globl _restore_user_context
-.globl _copr_not_available_handler
-.globl _reload_cr3
-
-.globl _divide_error
-.globl _single_step_exception
-.globl _nmi
-.globl _breakpoint_exception
-.globl _overflow
-.globl _bounds_check
-.globl _inval_opcode
-.globl _copr_not_available
-.globl _double_fault
-.globl _copr_seg_overrun
-.globl _inval_tss
-.globl _segment_not_present
-.globl _stack_exception
-.globl _general_protection
-.globl _page_fault
-.globl _copr_error
-.globl _alignment_check
-.globl _machine_check
-.globl _simd_exception
-.globl _params_size
-.globl _params_offset
-.globl _mon_ds
-.globl _switch_to_user
-.globl _save_fpu
-
-.globl _hwint00 /* handlers for hardware interrupts */
-.globl _hwint01
-.globl _hwint02
-.globl _hwint03
-.globl _hwint04
-.globl _hwint05
-.globl _hwint06
-.globl _hwint07
-.globl _hwint08
-.globl _hwint09
-.globl _hwint10
-.globl _hwint11
-.globl _hwint12
-.globl _hwint13
-.globl _hwint14
-.globl _hwint15
+IMPORT(copr_not_available_handler)
+IMPORT(params_size)
+IMPORT(params_offset)
+IMPORT(mon_ds)
+IMPORT(switch_to_user)
/* Exported variables. */
.globl begbss
push %edi
cmp $0, 4(%ebp) /* monitor return vector is */
je noret /* nonzero if return possible */
- incl _mon_return
+ incl _C_LABEL(mon_return)
noret:
- movl %esp, _mon_sp /* save stack pointer for later return */
+ movl %esp, _C_LABEL(mon_sp) /* save stack pointer for later return */
/* Copy the monitor global descriptor table to the address space of kernel and */
/* switch over to it. Prot_init() can then update it with immediate effect. */
- sgdt _gdt+GDT_SELECTOR /* get the monitor gdtr */
- movl _gdt+GDT_SELECTOR+2, %esi /* absolute address of GDT */
- mov $_gdt, %ebx /* address of kernel GDT */
+ sgdt _C_LABEL(gdt)+GDT_SELECTOR /* get the monitor gdtr */
+ movl _C_LABEL(gdt)+GDT_SELECTOR+2, %esi /* absolute address of GDT */
+ mov $_C_LABEL(gdt), %ebx /* address of kernel GDT */
mov $8*8, %ecx /* copying eight descriptors */
copygdt:
movb %es:(%esi), %al
inc %esi
inc %ebx
loop copygdt
- movl _gdt+DS_SELECTOR+2, %eax /* base of kernel data */
+ movl _C_LABEL(gdt)+DS_SELECTOR+2, %eax /* base of kernel data */
and $0x00FFFFFF, %eax /* only 24 bits */
- add $_gdt, %eax /* eax = vir2phys(gdt) */
- movl %eax, _gdt+GDT_SELECTOR+2 /* set base of GDT */
- lgdt _gdt+GDT_SELECTOR /* switch over to kernel GDT */
+ add $_C_LABEL(gdt), %eax /* eax = vir2phys(gdt) */
+ movl %eax, _C_LABEL(gdt)+GDT_SELECTOR+2 /* set base of GDT */
+ lgdt _C_LABEL(gdt)+GDT_SELECTOR /* switch over to kernel GDT */
/* Locate boot parameters, set up kernel segment registers and stack. */
mov 8(%ebp), %ebx /* boot parameters offset */
mov 12(%ebp), %edx /* boot parameters length */
mov 16(%ebp), %eax /* address of a.out headers */
- movl %eax, _aout
+ movl %eax, _C_LABEL(aout)
mov %ds, %ax /* kernel data */
mov %ax, %es
mov %ax, %fs
mov %ax, %gs
mov %ax, %ss
- mov $_k_boot_stktop, %esp /* set sp to point to the top of kernel stack */
+ mov $_C_LABEL(k_boot_stktop), %esp /* set sp to point to the top of kernel stack */
/* Save boot parameters into these global variables for i386 code */
- movl %edx, _params_size
- movl %ebx, _params_offset
- movl $SS_SELECTOR, _mon_ds
+ movl %edx, _C_LABEL(params_size)
+ movl %ebx, _C_LABEL(params_offset)
+ movl $SS_SELECTOR, _C_LABEL(mon_ds)
/* Call C startup code to set up a proper environment to run main(). */
push %edx
push $SS_SELECTOR
push $DS_SELECTOR
push $CS_SELECTOR
- call _cstart /* cstart(cs, ds, mds, parmoff, parmlen) */
+ call _C_LABEL(cstart) /* cstart(cs, ds, mds, parmoff, parmlen) */
add $5*4, %esp
/* Reload gdtr, idtr and the segment registers to global descriptor table set */
/* up by prot_init(). */
- lgdt _gdt+GDT_SELECTOR
- lidt _gdt+IDT_SELECTOR
+ lgdt _C_LABEL(gdt)+GDT_SELECTOR
+ lidt _C_LABEL(gdt)+IDT_SELECTOR
ljmp $CS_SELECTOR, $csinit
csinit:
ltr %ax
push $0 /* set flags to known good state */
popf /* esp, clear nested task and int enable */
- jmp _main /* main() */
+ jmp _C_LABEL(main) /* main() */
/*===========================================================================*/
#define PIC_IRQ_HANDLER(irq) \
push $irq ;\
- call _irq_handle /* intr_handle(irq_handlers[irq]) */ ;\
+ call _C_LABEL(irq_handle) /* intr_handle(irq_handlers[irq]) */ ;\
add $4, %esp ;
/*===========================================================================*/
SAVE_PROCESS_CTX(0) ;\
push %ebp ;\
movl $0, %ebp /* for stack trace */ ;\
- call _context_stop ;\
+ call _C_LABEL(context_stop) ;\
add $4, %esp ;\
PIC_IRQ_HANDLER(irq) ;\
movb $END_OF_INT, %al ;\
outb $INT_CTL /* reenable interrupts in master pic */ ;\
- jmp _switch_to_user ;\
+ jmp _C_LABEL(switch_to_user) ;\
\
0: \
pusha ;\
- call _context_stop_idle ;\
+ call _C_LABEL(context_stop_idle) ;\
PIC_IRQ_HANDLER(irq) ;\
movb $END_OF_INT, %al ;\
outb $INT_CTL /* reenable interrupts in master pic */ ;\
iret ;
/* Each of these entry points is an expansion of the hwint_master macro */
-.balign 16
-_hwint00:
+ENTRY(hwint00)
/* Interrupt routine for irq 0 (the clock). */
hwint_master(0)
-.balign 16
-_hwint01:
+ENTRY(hwint01)
/* Interrupt routine for irq 1 (keyboard) */
hwint_master(1)
-.balign 16
-_hwint02:
+ENTRY(hwint02)
/* Interrupt routine for irq 2 (cascade!) */
hwint_master(2)
-.balign 16
-_hwint03:
+ENTRY(hwint03)
/* Interrupt routine for irq 3 (second serial) */
hwint_master(3)
-.balign 16
-_hwint04:
+ENTRY(hwint04)
/* Interrupt routine for irq 4 (first serial) */
hwint_master(4)
-.balign 16
-_hwint05:
+ENTRY(hwint05)
/* Interrupt routine for irq 5 (XT winchester) */
hwint_master(5)
-.balign 16
-_hwint06:
+ENTRY(hwint06)
/* Interrupt routine for irq 6 (floppy) */
hwint_master(6)
-.balign 16
-_hwint07:
+ENTRY(hwint07)
/* Interrupt routine for irq 7 (printer) */
hwint_master(7)
SAVE_PROCESS_CTX(0) ;\
push %ebp ;\
movl $0, %ebp /* for stack trace */ ;\
- call _context_stop ;\
+ call _C_LABEL(context_stop) ;\
add $4, %esp ;\
PIC_IRQ_HANDLER(irq) ;\
movb $END_OF_INT, %al ;\
outb $INT_CTL /* reenable interrupts in master pic */ ;\
outb $INT2_CTL /* reenable slave 8259 */ ;\
- jmp _switch_to_user ;\
+ jmp _C_LABEL(switch_to_user) ;\
\
0: \
pusha ;\
- call _context_stop_idle ;\
+ call _C_LABEL(context_stop_idle) ;\
PIC_IRQ_HANDLER(irq) ;\
movb $END_OF_INT, %al ;\
outb $INT_CTL /* reenable interrupts in master pic */ ;\
iret ;
/* Each of these entry points is an expansion of the hwint_slave macro */
-.balign 16
-_hwint08:
+ENTRY(hwint08)
/* Interrupt routine for irq 8 (realtime clock) */
hwint_slave(8)
-.balign 16
-_hwint09:
+ENTRY(hwint09)
/* Interrupt routine for irq 9 (irq 2 redirected) */
hwint_slave(9)
-.balign 16
-_hwint10:
+ENTRY(hwint10)
/* Interrupt routine for irq 10 */
hwint_slave(10)
-.balign 16
-_hwint11:
+ENTRY(hwint11)
/* Interrupt routine for irq 11 */
hwint_slave(11)
-.balign 16
-_hwint12:
+ENTRY(hwint12)
/* Interrupt routine for irq 12 */
hwint_slave(12)
-.balign 16
-_hwint13:
+ENTRY(hwint13)
/* Interrupt routine for irq 13 (FPU exception) */
hwint_slave(13)
-.balign 16
-_hwint14:
+ENTRY(hwint14)
/* Interrupt routine for irq 14 (AT winchester) */
hwint_slave(14)
-.balign 16
-_hwint15:
+ENTRY(hwint15)
/* Interrupt routine for irq 15 */
hwint_slave(15)
/*
* IPC is only from a process to kernel
*/
-.balign 16
-.globl _ipc_entry
-_ipc_entry:
+ENTRY(ipc_entry)
SAVE_PROCESS_CTX(0)
push %ebp
/* for stack trace */
movl $0, %ebp
- call _context_stop
+ call _C_LABEL(context_stop)
add $4, %esp
- call _do_ipc
+ call _C_LABEL(do_ipc)
/* restore the current process pointer and save the return value */
add $3 * 4, %esp
pop %esi
mov %eax, AXREG(%esi)
- jmp _switch_to_user
+ jmp _C_LABEL(switch_to_user)
/*
* kernel call is only from a process to kernel
*/
-.balign 16
-.globl _kernel_call_entry
-_kernel_call_entry:
+ENTRY(kernel_call_entry)
SAVE_PROCESS_CTX(0)
push %ebp
/* for stack trace */
movl $0, %ebp
- call _context_stop
+ call _C_LABEL(context_stop)
add $4, %esp
- call _kernel_call
+ call _C_LABEL(kernel_call)
/* restore the current process pointer and save the return value */
add $8, %esp
- jmp _switch_to_user
+ jmp _C_LABEL(switch_to_user)
.balign 16
push %ebp
/* for stack trace clear %ebp */
movl $0, %ebp
- call _context_stop
+ call _C_LABEL(context_stop)
add $4, %esp
/*
*/
push %esp
push $0 /* it's not a nested exception */
- call _exception_handler
+ call _C_LABEL(exception_handler)
- jmp _switch_to_user
+ jmp _C_LABEL(switch_to_user)
exception_entry_nested:
add $(8 * 4), %eax
push %eax
pushl $1 /* it's a nested exception */
- call _exception_handler
+ call _C_LABEL(exception_handler)
add $8, %esp
popa
/*===========================================================================*/
/* restart */
/*===========================================================================*/
-_restore_user_context:
+ENTRY(restore_user_context)
mov 4(%esp), %ebp /* will assume P_STACKBASE == 0 */
/* reconstruct the stack for iret */
pushl $0 ;\
EXCEPTION_ERR_CODE(vector)
-_divide_error:
+LABEL(divide_error)
EXCEPTION_NO_ERR_CODE(DIVIDE_VECTOR)
-_single_step_exception:
+LABEL(single_step_exception)
EXCEPTION_NO_ERR_CODE(DEBUG_VECTOR)
-_nmi:
+LABEL(nmi)
#ifndef CONFIG_WATCHDOG
EXCEPTION_NO_ERR_CODE(NMI_VECTOR)
#else
mov %si, %es
push %esp
- call _nmi_watchdog_handler
+ call _C_LABEL(nmi_watchdog_handler)
add $4, %esp
/* restore all the important registers as they were before the trap */
iret
#endif
-_breakpoint_exception:
+LABEL(breakpoint_exception)
EXCEPTION_NO_ERR_CODE(BREAKPOINT_VECTOR)
-_overflow:
+LABEL(overflow)
EXCEPTION_NO_ERR_CODE(OVERFLOW_VECTOR)
-_bounds_check:
+LABEL(bounds_check)
EXCEPTION_NO_ERR_CODE(BOUNDS_VECTOR)
-_inval_opcode:
+LABEL(inval_opcode)
EXCEPTION_NO_ERR_CODE(INVAL_OP_VECTOR)
-_copr_not_available:
+LABEL(copr_not_available)
TEST_INT_IN_KERNEL(4, copr_not_available_in_kernel)
cld /* set direction flag to a known value */
SAVE_PROCESS_CTX(0)
/* stop user process cycles */
push %ebp
mov $0, %ebp
- call _context_stop
- jmp _copr_not_available_handler
+ call _C_LABEL(context_stop)
+ jmp _C_LABEL(copr_not_available_handler)
copr_not_available_in_kernel:
pushl $0
pushl $COPROC_NOT_VECTOR
jmp exception_entry_nested
-_double_fault:
+LABEL(double_fault)
EXCEPTION_ERR_CODE(DOUBLE_FAULT_VECTOR)
-_copr_seg_overrun:
+LABEL(copr_seg_overrun)
EXCEPTION_NO_ERR_CODE(COPROC_SEG_VECTOR)
-_inval_tss:
+LABEL(inval_tss)
EXCEPTION_ERR_CODE(INVAL_TSS_VECTOR)
-_segment_not_present:
+LABEL(segment_not_present)
EXCEPTION_ERR_CODE(SEG_NOT_VECTOR)
-_stack_exception:
+LABEL(stack_exception)
EXCEPTION_ERR_CODE(STACK_FAULT_VECTOR)
-_general_protection:
+LABEL(general_protection)
EXCEPTION_ERR_CODE(PROTECTION_VECTOR)
-_page_fault:
+LABEL(page_fault)
EXCEPTION_ERR_CODE(PAGE_FAULT_VECTOR)
-_copr_error:
+LABEL(copr_error)
EXCEPTION_NO_ERR_CODE(COPROC_ERR_VECTOR)
-_alignment_check:
+LABEL(alignment_check)
EXCEPTION_NO_ERR_CODE(ALIGNMENT_CHECK_VECTOR)
-_machine_check:
+LABEL(machine_check)
EXCEPTION_NO_ERR_CODE(MACHINE_CHECK_VECTOR)
-_simd_exception:
+LABEL(simd_exception)
EXCEPTION_NO_ERR_CODE(SIMD_EXCEPTION_VECTOR)
/*===========================================================================*/
/* reload_cr3 */
/*===========================================================================*/
/* PUBLIC void reload_cr3(void); */
-_reload_cr3:
+ENTRY(reload_cr3)
push %ebp
mov %esp, %ebp
mov %cr3, %eax
/*
* the kernel stack
*/
-.globl _k_boot_stktop
k_boot_stack:
.space 4096 /* kernel stack */ /* FIXME use macro here */
-_k_boot_stktop: /* top of kernel stack */
+LABEL(k_boot_stktop) /* top of kernel stack */
#include <minix/config.h>
#include <minix/const.h>
#include <minix/com.h>
+#include <machine/asm.h>
#include <machine/interrupt.h>
#include "archconst.h"
#include "kernel/const.h"
#define GDT_SET_ENTRY(selector, base, limit) \
mov %ebp, %edi; \
- add $(_gdt + selector), %edi; \
+ add $(_C_LABEL(gdt) + selector), %edi; \
mov base, %eax; \
movw %ax, 2(%edi); \
shr $16, %eax; \
andb $0xf0, 6(%edi); \
or %ax, 6(%edi); \
-.globl _pre_init
-.globl multiboot_init
-.globl kernel_init
+IMPORT(pre_init)
+.extern kernel_init
+.globl multiboot_init
multiboot_init:
/* Get size of kernel text */
mov MULTIBOOT_LOAD_ADDRESS + MULTIBOOT_KERNEL_a_text, %ecx
/* Calculate and save kernel data base address */
mov $(MULTIBOOT_LOAD_ADDRESS + MULTIBOOT_ENTRY_OFFSET), %ebp
add %eax, %ebp
- mov %ebp, _kernel_data_addr(%ebp)
+ mov %ebp, _C_LABEL(kernel_data_addr)(%ebp)
/* Init text seg */
GDT_SET_ENTRY(CS_SELECTOR, \
mov $(GDT_SIZE*DESC_SIZE), %eax
mov %ebp, %edi
- add $(_gdt + GDT_SELECTOR), %edi
+ add $(_C_LABEL(gdt) + GDT_SELECTOR), %edi
mov %ax, (%edi)
mov %ebp, %eax
- add $_gdt, %eax
+ add $_C_LABEL(gdt), %eax
mov %eax, 2(%edi)
lgdt (%edi)
mov $(multiboot_stack + MULTIBOOT_STACK_SIZE), %esp
push %ebx
- call _pre_init
+ call _C_LABEL(pre_init)
add $4, %esp
/* return to old boot code of kernel */
push %eax
push $MULTIBOOT_PARAM_BUF_SIZE
- push $_multiboot_param_buf
+ push $_C_LABEL(multiboot_param_buf)
push $0
mov $ES_SELECTOR, %eax
jmp kernel_init
.data
-.globl _kernel_data_addr
-_kernel_data_addr:
-.long 0
-.globl _a_out_headers
-_a_out_headers:
-.space NR_BOOT_PROCS * 32 /* is A_MINHDR */
+LABEL(kernel_data_addr)
+ .long 0
+LABEL(a_out_headers)
+ .space NR_BOOT_PROCS * 32 /* is A_MINHDR */
-.globl _multiboot_param_buf
-_multiboot_param_buf:
-.space MULTIBOOT_PARAM_BUF_SIZE
+LABEL(multiboot_param_buf)
+ .space MULTIBOOT_PARAM_BUF_SIZE
multiboot_stack:
.space MULTIBOOT_STACK_SIZE + 4
/* add64() - 64 bit addition Author: Kees J. Bot */
/* 7 Dec 1995 */
#include <minix/compiler.h>
+#include <machine/asm.h>
-.text
-.globl _add64
-
-_add64:
+ENTRY(add64)
/* u64_t add64(u64_t i, u64_t j); */
movl 4(%esp), %eax
movl 8(%esp), %edx
/* add64u() - unsigned to 64 bit addition Author: Kees J. Bot */
/* 7 Dec 1995 */
#include <minix/compiler.h>
+#include <machine/asm.h>
-.text
-.globl _add64u, _add64ul
-
-_add64u:
+ENTRY(add64u)
/* u64_t add64u(u64_t i, unsigned j); */
-_add64ul:
+ENTRY(add64ul)
/* u64_t add64ul(u64_t i, unsigned long j); */
movl 4(%esp), %eax
movl 8(%esp), %edx
/* bsr64() - 64 bit bit scan reverse Author: Erik van der Kouwe */
/* 15 May 2010 */
#include <minix/compiler.h>
+#include <machine/asm.h>
-.text
-.globl _bsr64
-
-_bsr64:
+ENTRY(bsr64)
/* int bsr64(u64_t i); */
bsr 8(%esp), %eax /* check high-order DWORD */
jnz 0f /* non-zero: return index+32 */
/* cmp64*() - 64 bit compare Author: Kees J. Bot */
/* 7 Dec 1995 */
-.text
-.globl _cmp64, _cmp64u, _cmp64ul
+#include <machine/asm.h>
-_cmp64:
+ENTRY(cmp64)
/* int cmp64(u64_t i, u64_t j); */
movl %esp, %ecx
0:
adcl $0, %eax /* eax = (i > j) - (i < j) */
ret
-_cmp64u:
+ENTRY(cmp64u)
/* int cmp64u(u64_t i, unsigned j); */
-_cmp64ul:
+ENTRY(cmp64ul)
/* int cmp64ul(u64_t i, unsigned long j); */
movl %esp, %ecx
push 16(%ecx)
/* cv64u() - 64 bit converted to unsigned Author: Kees J. Bot */
/* 7 Dec 1995 */
-.text
-.globl _cv64u, _cv64ul
+#include <machine/asm.h>
-_cv64u:
+ENTRY(cv64u)
/* unsigned cv64u(u64_t i); */
-_cv64ul:
+ENTRY(cv64ul)
/* unsigned long cv64ul(u64_t i); */
movl 4(%esp), %eax
cmpl $0, 8(%esp) /* return ULONG_MAX if really big */
/* cvu64() - unsigned converted to 64 bit Author: Kees J. Bot */
/* 7 Dec 1995 */
#include <minix/compiler.h>
+#include <machine/asm.h>
-.text
-.globl _cvu64, _cvul64
-
-_cvu64:
+ENTRY(cvu64)
/* u64_t cvu64(unsigned i); */
-_cvul64:
+ENTRY(cvul64)
/* u64_t cvul64(unsigned long i); */
movl 4(%esp), %eax
movl 8(%esp), %edx
/* diff64() - 64 bit subtraction giving unsigned Author: Kees J. Bot */
/* 7 Dec 1995 */
-.text
-.globl _diff64
+#include <machine/asm.h>
-_diff64:
+ENTRY(diff64)
/* unsigned diff64(u64_t i, u64_t j); */
movl 4(%esp), %eax
subl 12(%esp), %eax
/* Author: Kees J. Bot */
/* 7 Dec 1995 */
#include <minix/compiler.h>
+#include <machine/asm.h>
-.text
-.globl _div64u, _div64u64, _rem64u
-
-_div64u:
+ENTRY(div64u)
/* unsigned long div64u(u64_t i, unsigned j); */
xorl %edx, %edx
movl 8(%esp), %eax /* i = (ih<<32) + il */
divl 12(%esp) /* i / j = (q<<32) + ((r<<32) + il) / j */
ret
-_div64u64:
+ENTRY(div64u64)
/* u64_t div64u64(u64_t i, unsigned j); */
xorl %edx, %edx
movl 12(%esp), %eax /* i = (ih<<32) + il */
movl %ecx, %eax /* return pointer to result struct */
ret BYTES_TO_POP_ON_STRUCT_RETURN
-_rem64u:
+ENTRY(rem64u)
/* unsigned rem64u(u64_t i, unsigned j); */
pop %ecx
- call _div64u
+ call _C_LABEL(div64u)
movl %edx, %eax
jmp *%ecx
/* ex64*() - extract low or high 32 bits of a 64 bit number */
/* Author: Kees J. Bot */
/* 7 Dec 1995 */
-.text
-.globl _ex64lo, _ex64hi
+#include <machine/asm.h>
-_ex64lo:
+ENTRY(ex64lo)
/* unsigned long ex64lo(u64_t i); */
movl 4(%esp), %eax
ret
-_ex64hi:
+ENTRY(ex64hi)
/* unsigned long ex64hi(u64_t i); */
movl 8(%esp), %eax
ret
/* Author: Kees J. Bot */
/* 7 Dec 1995 */
#include <minix/compiler.h>
+#include <machine/asm.h>
-.text
-.globl _make64
-
-_make64:
+ENTRY(make64)
/* u64_t make64(unsigned long lo, unsigned long hi); */
movl 4(%esp), %eax
movl 8(%esp), %edx
/* Author: Kees J. Bot */
/* 7 Dec 1995 */
#include <minix/compiler.h>
+#include <machine/asm.h>
-.text
-.globl _mul64u
-
-_mul64u:
+ENTRY(mul64u)
/* u64_t mul64u(unsigned long i, unsigned j); */
movl 4(%esp), %ecx
movl 8(%esp), %eax
/* sub64() - 64 bit subtraction Author: Kees J. Bot */
/* 7 Dec 1995 */
#include <minix/compiler.h>
+#include <machine/asm.h>
-.text
-.globl _sub64
-
-_sub64:
+ENTRY(sub64)
/* u64_t sub64(u64_t i, u64_t j); */
movl 4(%esp), %eax
movl 8(%esp), %edx
/* sub64() - unsigned from 64 bit subtraction Author: Kees J. Bot */
/* 7 Dec 1995 */
#include <minix/compiler.h>
+#include <machine/asm.h>
-.text
-.globl _sub64u, _sub64ul
-
-_sub64u:
+ENTRY(sub64u)
/* u64_t sub64u(u64_t i, unsigned j); */
-_sub64ul:
+ENTRY(sub64ul)
/* u64_t sub64ul(u64_t i, unsigned long j); */
movl 4(%esp), %eax
movl 8(%esp), %edx
/* fpu_cw_get() - get FPU control word Author: Erik van der Kouwe */
/* fpu_cw_set() - set FPU control word 9 Dec 2009 */
-.text
-.globl _fpu_cw_get
-.globl _fpu_cw_set
+#include <machine/asm.h>
/* u16_t fpu_cw_get(void) */
-_fpu_cw_get:
+ENTRY(fpu_cw_get)
/* clear unused bits just to be sure */
xor %eax, %eax
push %eax
ret
/* void fpu_cw_set(u16_t fpu_cw) */
-_fpu_cw_set:
+ENTRY(fpu_cw_set)
/* load control word from parameter */
fldcw 4(%esp)
ret
/* fpu_rndint() - round integer Author: Erik van der Kouwe */
/* 17 Dec 2009 */
-.text
-.globl _fpu_rndint
-.globl _fpu_remainder
+#include <machine/asm.h>
/* void fpu_rndint(double *value) */
-_fpu_rndint:
+ENTRY(fpu_rndint)
/* move the value onto the floating point stack */
mov 4(%esp), %eax
fldl (%eax)
ret
/* void fpu_remainder(double *x, double y) */
-_fpu_remainder:
+ENTRY(fpu_remainder)
/* move the values onto the floating point stack */
fldl 8(%esp)
mov 4(%esp), %edx
/* fpu_compare() - compare doubles Author: Erik van der Kouwe */
/* fpu_sw_get() - get FPU status 17 Dec 2009 */
/* fpu_xam() - examine double */
-.text
-.globl _fpu_compare
-.globl _fpu_sw_get
-.globl _fpu_xam
+#include <machine/asm.h>
/* u16_t fpu_compare(double x, double y) */
-_fpu_compare:
+ENTRY(fpu_compare)
/* move the values onto the floating point stack */
fldl 12(%esp)
fldl 4(%esp)
/* compare values and return status word */
fcompp
- jmp _fpu_sw_get
+ jmp _C_LABEL(fpu_sw_get)
/* u16_t fpu_sw_get(void) */
-_fpu_sw_get:
+ENTRY(fpu_sw_get)
/* clear unused high-order word and get status word */
xor %eax, %eax
.byte 0xdf, 0xe0 /* fnstsw ax */
ret
/* u16_t fpu_xam(double value) */
-_fpu_xam:
+ENTRY(fpu_xam)
/* move the value onto the floating point stack */
fldl 4(%esp)
/* examine value and get status word */
fxam
- call _fpu_sw_get
+ call _C_LABEL(fpu_sw_get)
/* pop the value */
fstp %st
/* void _cpuid(u32_t *eax, u32_t *ebx, u32_t *ecx, u32_t *edx); */
/* 0 for OK, nonzero for unsupported */
-.globl __cpuid
+#include <machine/asm.h>
-.text
-__cpuid:
+ENTRY(_cpuid)
/* save work registers */
push %ebp
push %ebx
/* alloca() - allocate space on the stack Author: Kees J. Bot */
/* 2 Dec 1993 */
-.text
-.balign 16
-.globl _alloca
-_alloca:
+#include <machine/asm.h>
+
+ENTRY(alloca)
#if __ACK__
pop %ecx /* Return address */
pop %eax /* Bytes to allocate */
/* */
/* Created: Sep 7, 1992 by Philip Homburg */
+#include <machine/asm.h>
-.text
-.globl _get_bp
-_get_bp:
+ENTRY(get_bp)
movl %ebp, %eax
ret
/* getprocessor() - determine processor type Author: Kees J. Bot */
/* 26 Jan 1994 */
-
-.text
+#include <machine/asm.h>
/* int getprocessor(void); */
/* Return 386, 486, 586, ... */
-
-.globl _getprocessor
-
-_getprocessor:
+ENTRY(getprocessor)
push %ebp
movl %esp, %ebp
andl $0xFFFFFFFC, %esp /* Align stack to avoid AC fault */
/* 9 May 1995 */
/* See RFC 1071, "Computing the Internet checksum" */
/* See also the C version of this code. */
+#include <machine/asm.h>
-.text
-
-.globl _oneC_sum
-.balign 16
-_oneC_sum:
+ENTRY(oneC_sum)
push %ebp
movl %esp, %ebp
push %esi
adcl $0, %eax /* Add carry back in for one`s complement */
jmp add6test
-.balign 16
+_ALIGN_TEXT
add6:
addl (%esi), %eax /* Six times unrolled loop, see below */
adcl 4(%esi), %eax
addl $24, %edi
jmp add1test
-.balign 16
+_ALIGN_TEXT
add1:
addl (%esi), %eax /* while ((edi -= 4) >= 0) */
adcl $0, %eax /* eax += *esi++; */
#else
.data
#endif
-.balign 4
+.balign 4
mask:
.long 0x000000FF, 0x0000FFFF, 0x00FFFFFF
+#include <machine/asm.h>
#ifdef __ACK__
.text
begbss:
#endif
-.extern _getuctx
-.extern _setuctx
-.extern _resumecontext
+
+IMPORT(getuctx)
+IMPORT(setuctx)
+IMPORT(resumecontext)
+
/* Offsets into ucontext_t structure. Keep in sync with <sys/ucontext.h>! */
#define UC_FLAGS 0
#define EFAULT 14
#define EINVAL 22
+
/* int getcontext(ucontext_t *ucp)
* Initialise the structure pointed to by ucp to the current user context
* of the calling thread. */
-
-
-.text
-
-.globl _getcontext
-.balign 16
-_getcontext:
+ENTRY(getcontext)
/* In case a process does not use the FPU and is neither interested in
* saving its signal mask, then we can skip the context switch to
* PM and kernel altogether and only save general-purpose registers. */
/* Check null pointer */
cmp $0, %edx /* edx == NULL? */
jne 3f /* Not null, continue */
- movl $EFAULT, (_errno)
+ movl $EFAULT, (_C_LABEL(errno))
xor %eax, %eax
dec %eax /* return -1 */
ret
0:
push %ecx /* Save ecx */
push %edx
- call _getuctx /* getuctx(ucp) */
+ call _C_LABEL(getuctx) /* getuctx(ucp) */
pop %edx /* clean up stack and restore edx */
pop %ecx /* Restore ecx */
* program execution continues as if the corresponding call of getcontext()
* had just returned. If ucp was created with makecontext(), program
* execution continues with the function passed to makecontext(). */
-
-.text
-
-.globl _setcontext
-.balign 16
-_setcontext:
+ENTRY(setcontext)
/* In case a process does not use the FPU and is neither interested in
* restoring its signal mask, then we can skip the context switch to
* PM and kernel altogether and restore state here. */
/* Check null pointer */
cmp $0, %edx /* edx == NULL? */
jnz 3f /* Not null, continue */
- movl $EFAULT, (_errno)
+ movl $EFAULT, (_C_LABEL(errno))
xor %eax, %eax
dec %eax /* return -1 */
ret
pop %ebx /* restore ebx */
cmp $MCF_MAGIC, %ecx /* is the magic value set (is context valid)?*/
jz 4f /* is set, proceed */
- movl $EINVAL, (_errno) /* not set, return error code */
+ movl $EINVAL, (_C_LABEL(errno)) /* not set, return error code */
xor %eax, %eax
dec %eax /* return -1 */
ret
0: push %ecx /* Save ecx */
push %edx
- call _setuctx /* setuctx(ucp) */
+ call _C_LABEL(setuctx) /* setuctx(ucp) */
pop %edx /* Clean up stack and restore edx */
pop %ecx /* Restore ecx */
* arguments to `func' from the stack. Finally, a call to resumecontext
* will start the next context in the linked list (or exit the program if
* there is no context). */
-
-.text
-
-.globl _ctx_start
-.balign 16
-_ctx_start:
+ENTRY(ctx_start)
/* 0(esp) -> func
* 4(esp) -> arg1
* ...
call *%eax /* func(arg1, ..., argn) */
mov %esi, %esp /* Clean up stack */
/* ucp is now at the top of the stack again */
- call _resumecontext /* resumecontext(ucp) */
+ call _C_LABEL(resumecontext) /* resumecontext(ucp) */
ret /* never reached */
/* This routine is the low-level code for returning from signals. */
-/* It calls __sigreturn, which is the normal "system call" routine. */
-/* Both ___sigreturn and __sigreturn are needed. */
-.text
-.globl ___sigreturn
-.extern __sigreturn
-___sigreturn:
+/* It calls _sigreturn, which is the normal "system call" routine. */
+/* Both __sigreturn and _sigreturn are needed. */
+#include <machine/asm.h>
+
+IMPORT(_sigreturn)
+ENTRY(__sigreturn)
addl $16, %esp
- jmp __sigreturn
+ jmp _C_LABEL(_sigreturn)
#include <minix/ipcconst.h>
-
-.globl __notify, __send, __senda, __sendnb, __receive, __sendrec, __do_kernel_call
+#include <machine/asm.h>
IPCVEC = 33 /* ipc trap to kernel */
KERVEC = 32 /* syscall trap to kernel */
/* IPC assembly routines * */
/**========================================================================* */
/* all message passing routines save ebx, but destroy eax and ecx. */
-.text
-__send:
+ENTRY(_send)
push %ebp
movl %esp, %ebp
push %ebx
pop %ebp
ret
-__receive:
+ENTRY(_receive)
push %ebp
movl %esp, %ebp
push %ebx
pop %ebp
ret
-__sendrec:
+ENTRY(_sendrec)
push %ebp
movl %esp, %ebp
push %ebx
pop %ebp
ret
-__notify:
+ENTRY(_notify)
push %ebp
movl %esp, %ebp
push %ebx
pop %ebp
ret
-__sendnb:
+ENTRY(_sendnb)
push %ebp
movl %esp, %ebp
push %ebx
pop %ebp
ret
-__do_kernel_call:
+ENTRY(_do_kernel_call)
/* pass the message pointer to kernel in the %eax register */
movl 4(%esp), %eax
int $KERVEC
#include <minix/ipcconst.h>
-
-.globl __senda
+#include <machine/asm.h>
SYSVEC = 33
MSGTAB = 8 /* message table */
TABCOUNT = 12 /* number of entries in message table */
-.text
-
-__senda:
+ENTRY(_senda)
push %ebp
movl %esp, %ebp
push %ebx
/* void *_memmove(void *s1, const void *s2, size_t n) */
/* Copy a chunk of memory. Handle overlap. */
/* */
-.text
-.globl __memmove, __memcpy
-.balign 16
-__memmove:
+#include <machine/asm.h>
+
+ENTRY(_memmove)
push %ebp
movl %esp, %ebp
push %esi
subl %esi, %eax
cmpl %ecx, %eax
jb downwards /* if (s2 - s1) < n then copy downwards */
-__memcpy:
+LABEL(_memcpy)
cld /* Clear direction bit: upwards */
cmpl $16, %ecx
jb upbyte /* Don't bother being smart with short arrays */
/* char *_strncat(char *s1, const char *s2, size_t edx) */
/* Append string s2 to s1. */
/* */
-.text
-.globl __strncat
-.balign 16
-__strncat:
+#include <machine/asm.h>
+
+ENTRY(_strncat)
push %ebp
movl %esp, %ebp
push %esi
/* int strncmp(const char *s1, const char *s2, size_t ecx) */
/* Compare two strings. */
/* */
-.text
-.globl __strncmp
-.balign 16
-__strncmp:
+#include <machine/asm.h>
+
+ENTRY(_strncmp)
push %ebp
movl %esp, %ebp
push %esi
/* char *_strncpy(char *s1, const char *s2, size_t ecx) */
/* Copy string s2 to s1. */
/* */
-.text
-.globl __strncpy
-.balign 16
-__strncpy:
+#include <machine/asm.h>
+
+ENTRY(_strncpy)
movl 12(%ebp), %edi /* edi = string s2 */
xorb %al, %al /* Look for a zero byte */
movl %ecx, %edx /* Save maximum count */
/* size_t _strnlen(const char *s, size_t ecx) */
/* Return the length of a string. */
/* */
-.text
-.globl __strnlen
-.balign 16
-__strnlen:
+#include <machine/asm.h>
+
+ENTRY(_strnlen)
push %ebp
movl %esp, %ebp
push %edi
/* (Alas it is not without some use, it reports the number of bytes */
/* after the bytes that are equal. So it can't be simply replaced.) */
/* */
-.text
-.globl _bcmp
-.balign 16
-_bcmp:
+#include <machine/asm.h>
+
+ENTRY(bcmp)
push %ebp
movl %esp, %ebp
push 16(%ebp)
push 12(%ebp)
push 8(%ebp)
- call _memcmp /* Let memcmp do the work */
+ call _C_LABEL(memcmp) /* Let memcmp do the work */
testl %eax, %eax
je equal
subl 8(%ebp), %edx /* Memcmp was nice enough to leave "esi" in edx */
/* Copy a chunk of memory. Handle overlap. */
/* This is a BSD routine that escaped from the kernel. Don't use. */
/* */
-.text
-.globl _bcopy
-.balign 16
-_bcopy:
+#include <machine/asm.h>
+
+ENTRY(bcopy)
movl 4(%esp), %eax /* Exchange string arguments */
xchgl 8(%esp), %eax
movl %eax, 4(%esp)
- jmp __memmove /* Call the proper routine */
+ jmp _C_LABEL(_memmove) /* Call the proper routine */
/* Set a chunk of memory to zero. */
/* This is a BSD routine that escaped from the kernel. Don't use. */
/* */
-.text
-.globl _bzero
-.balign 16
-_bzero:
+#include <machine/asm.h>
+
+ENTRY(bzero)
push %ebp
movl %esp, %ebp
push 12(%ebp) /* Size */
push $0 /* Zero */
push 8(%ebp) /* String */
- call _memset /* Call the proper routine */
+ call _C_LABEL(memset) /* Call the proper routine */
leave
ret
/* Look for a character in a string. Has suffered from a hostile */
/* takeover by strchr(). */
/* */
-.text
-.globl _index
-.balign 16
-_index:
- jmp _strchr
+#include <machine/asm.h>
+
+ENTRY(index)
+ jmp _C_LABEL(strchr)
/* void *memchr(const void *s, int c, size_t n) */
/* Look for a character in a chunk of memory. */
/* */
-.text
-.globl _memchr
-.balign 16
-_memchr:
+#include <machine/asm.h>
+
+ENTRY(memchr)
push %ebp
movl %esp, %ebp
push %edi
/* int memcmp(const void *s1, const void *s2, size_t n) */
/* Compare two chunks of memory. */
/* */
-.text
-.globl _memcmp
-.balign 16
-_memcmp:
+#include <machine/asm.h>
+
+ENTRY(memcmp)
cld
push %ebp
movl %esp, %ebp
/* negligible, but you are dealing with a programmer who believes that if */
/* anything can go wrong, it should go wrong. */
/* */
-.text
-.globl _memcpy
-.balign 16
-_memcpy:
+#include <machine/asm.h>
+
+ENTRY(memcpy)
push %ebp
movl %esp, %ebp
push %esi
movl 12(%ebp), %esi /* String s2 */
movl 16(%ebp), %ecx /* Length */
/* No overlap check here */
- jmp __memcpy /* Call the part of __memmove that copies up */
+ jmp _C_LABEL(_memcpy) /* Call the part of __memmove that copies up */
/* void *memmove(void *s1, const void *s2, size_t n) */
/* Copy a chunk of memory. Handle overlap. */
/* */
-.text
-.globl _memmove
-.balign 16
-_memmove:
- jmp __memmove /* Call common code */
+#include <machine/asm.h>
+
+ENTRY(memmove)
+ jmp _C_LABEL(_memmove) /* Call common code */
/* void *memset(void *s, int c, size_t n) */
/* Set a chunk of memory to the same byte value. */
/* */
-.text
-.globl _memset
-.balign 16
-_memset:
+#include <machine/asm.h>
+
+ENTRY(memset)
push %ebp
movl %esp, %ebp
push %edi
/* Look for the last occurrence a character in a string. Has suffered */
/* from a hostile takeover by strrchr(). */
/* */
-.text
-.globl _rindex
-.balign 16
-_rindex:
- jmp _strrchr
+#include <machine/asm.h>
+
+ENTRY(rindex)
+ jmp _C_LABEL(strrchr)
/* char *strcat(char *s1, const char *s2) */
/* Append string s2 to s1. */
/* */
-.text
-.globl _strcat
-.balign 16
-_strcat:
+#include <machine/asm.h>
+
+ENTRY(strcat)
movl $-1, %edx /* Unlimited length */
- jmp __strncat /* Common code */
+ jmp _C_LABEL(_strncat) /* Common code */
/* char *strchr(const char *s, int c) */
/* Look for a character in a string. */
/* */
-.text
-.globl _strchr
-.balign 16
-_strchr:
+#include <machine/asm.h>
+
+ENTRY(strchr)
push %ebp
movl %esp, %ebp
push %edi
/* int strcmp(const char *s1, const char *s2) */
/* Compare two strings. */
/* */
-.text
-.globl _strcmp
-.balign 16
-_strcmp:
+#include <machine/asm.h>
+
+ENTRY(strcmp)
movl $-1, %ecx /* Unlimited length */
- jmp __strncmp /* Common code */
+ jmp _C_LABEL(_strncmp) /* Common code */
/* char *strcpy(char *s1, const char *s2) */
/* Copy string s2 to s1. */
/* */
-.text
-.globl _strcpy
-.balign 16
-_strcpy:
+#include <machine/asm.h>
+
+ENTRY(strcpy)
push %ebp
movl %esp, %ebp
push %esi
push %edi
movl $-1, %ecx /* Unlimited length */
- call __strncpy /* Common code */
+ call _C_LABEL(_strncpy) /* Common code */
movl 8(%ebp), %eax /* Return s1 */
pop %edi
pop %esi
/* size_t strlen(const char *s) */
/* Return the length of a string. */
/* */
-.text
-.globl _strlen
-.balign 16
-_strlen:
+#include <machine/asm.h>
+
+ENTRY(strlen)
movl $-1, %ecx /* Unlimited length */
- jmp __strnlen /* Common code */
+ jmp _C_LABEL(_strnlen) /* Common code */
/* size_t strncat(char *s1, const char *s2, size_t n) */
/* Append string s2 to s1. */
/* */
-.text
-.globl _strncat
-.balign 16
-_strncat:
+#include <machine/asm.h>
+
+ENTRY(strncat)
movl 12(%esp), %edx /* Maximum length */
- jmp __strncat /* Common code */
+ jmp _C_LABEL(_strncat) /* Common code */
/* int strncmp(const char *s1, const char *s2, size_t n) */
/* Compare two strings. */
/* */
-.text
-.globl _strncmp
-.balign 16
-_strncmp:
+#include <machine/asm.h>
+
+ENTRY(strncmp)
movl 12(%esp), %ecx /* Maximum length */
- jmp __strncmp /* Common code */
+ jmp _C_LABEL(_strncmp) /* Common code */
/* char *strncpy(char *s1, const char *s2, size_t n) */
/* Copy string s2 to s1. */
/* */
-.text
-.globl _strncpy
-.balign 16
-_strncpy:
+#include <machine/asm.h>
+
+ENTRY(strncpy)
push %ebp
movl %esp, %ebp
push %esi
push %edi
movl 16(%ebp), %ecx /* Maximum length */
- call __strncpy /* Common code */
+ call _C_LABEL(_strncpy) /* Common code */
movl %edx, %ecx /* Number of bytes not copied */
rep stosb /* strncpy always copies n bytes by null padding */
/* size_t strnlen(const char *s, size_t n) */
/* Return the length of a string. */
/* */
-.text
-.globl _strnlen
-.balign 16
-_strnlen:
+#include <machine/asm.h>
+
+ENTRY(strnlen)
movl 8(%esp), %ecx /* Maximum length */
- jmp __strnlen /* Common code */
+ jmp _C_LABEL(_strnlen) /* Common code */
/* char *strrchr(const char *s, int c) */
/* Look for the last occurrence a character in a string. */
/* */
-.text
-.globl _strrchr
-.balign 16
-_strrchr:
+#include <machine/asm.h>
+
+ENTRY(strrchr)
push %ebp
movl %esp, %ebp
push %edi
/ __setjmp.gnu.s
/
/ Created: Oct 14, 1993 by Philip Homburg <philip@cs.vu.nl>
+#include <machine/asm.h>
-.text
-.globl ___setjmp
-___setjmp:
+ENTRY(__setjmp)
movl 4(%esp), %eax /* jmp_buf */
movl %edx, 28(%eax) /* save edx */
movl 0(%esp), %edx
jz 1f
leal 4(%eax), %edx /* pointer to sigset_t */
push %edx
- call ___newsigset /* save mask */
+ call _C_LABEL(__newsigset) /* save mask */
addl $4, %esp
1:
movl $0, %eax
/ longjmp.gnu.s
/
/ Created: Oct 15, 1993 by Philip Homburg <philip@cs.vu.nl>
+#include <machine/asm.h>
-.text
-.globl _longjmp
-_longjmp:
+ENTRY(longjmp)
movl 4(%esp), %eax /* jmp_buf */
cmpl $0, 0(%eax) /* save mask? */
je 1f
leal 4(%eax), %edx /* pointer to sigset_t */
push %edx
- call ___oldsigset /* restore mask */
+ call _C_LABEL(__oldsigset) /* restore mask */
addl $4, %esp
movl 4(%esp), %eax /* jmp_buf */
1:
-.text
-.extern ___exit
-.globl __exit
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(__exit)
+ENTRY(_exit)
+ jmp _C_LABEL(__exit)
-__exit:
- jmp ___exit
-.text
-.extern ___pm_findproc
-.globl __pm_findproc
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(__pm_findproc)
+ENTRY(_pm_findproc)
+ jmp _C_LABEL(__pm_findproc)
-__pm_findproc:
- jmp ___pm_findproc
-.text
-.extern __access
-.globl _access
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_access)
+ENTRY(access)
+ jmp _C_LABEL(_access)
-_access:
- jmp __access
-.text
-.extern __adddma
-.globl _adddma
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_adddma)
+ENTRY(adddma)
+ jmp _C_LABEL(_adddma)
-_adddma:
- jmp __adddma
-.text
-.extern __alarm
-.globl _alarm
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_alarm)
+ENTRY(alarm)
+ jmp _C_LABEL(_alarm)
-_alarm:
- jmp __alarm
-.text
-.extern __brk
-.globl _brk
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_brk)
+ENTRY(brk)
+ jmp _C_LABEL(_brk)
-_brk:
- jmp __brk
-.text
-.extern __cfgetispeed
-.globl _cfgetispeed
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_cfgetispeed)
+ENTRY(cfgetispeed)
+ jmp _C_LABEL(_cfgetispeed)
-_cfgetispeed:
- jmp __cfgetispeed
-.text
-.extern __cfgetospeed
-.globl _cfgetospeed
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_cfgetospeed)
+ENTRY(cfgetospeed)
+ jmp _C_LABEL(_cfgetospeed)
-_cfgetospeed:
- jmp __cfgetospeed
-.text
-.extern __cfsetispeed
-.globl _cfsetispeed
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_cfsetispeed)
+ENTRY(cfsetispeed)
+ jmp _C_LABEL(_cfsetispeed)
-_cfsetispeed:
- jmp __cfsetispeed
-.text
-.extern __cfsetospeed
-.globl _cfsetospeed
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_cfsetospeed)
+ENTRY(cfsetospeed)
+ jmp _C_LABEL(_cfsetospeed)
-_cfsetospeed:
- jmp __cfsetospeed
-.text
-.extern __chdir
-.globl _chdir
-.extern __fchdir
-.globl _fchdir
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_chdir)
+ENTRY(chdir)
+ jmp _C_LABEL(_chdir)
+
+IMPORT(_fchdir)
+ENTRY(fchdir)
+ jmp _C_LABEL(_fchdir)
-_chdir:
- jmp __chdir
-_fchdir:
- jmp __fchdir
-.text
-.extern __chmod
-.globl _chmod
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_chmod)
+ENTRY(chmod)
+ jmp _C_LABEL(_chmod)
-_chmod:
- jmp __chmod
-.text
-.extern __chown
-.globl _chown
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_chown)
+ENTRY(chown)
+ jmp _C_LABEL(_chown)
-_chown:
- jmp __chown
-.text
-.extern __chroot
-.globl _chroot
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_chroot)
+ENTRY(chroot)
+ jmp _C_LABEL(_chroot)
-_chroot:
- jmp __chroot
-.text
-.extern __close
-.globl _close
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_close)
+ENTRY(close)
+ jmp _C_LABEL(_close)
-_close:
- jmp __close
-.text
-.extern __closedir
-.globl _closedir
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_closedir)
+ENTRY(closedir)
+ jmp _C_LABEL(_closedir)
-_closedir:
- jmp __closedir
-.text
-.extern __cprofile
-.globl _cprofile
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_cprofile)
+ENTRY(cprofile)
+ jmp _C_LABEL(_cprofile)
-_cprofile:
- jmp __cprofile
-.text
-.extern __creat
-.globl _creat
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_creat)
+ENTRY(creat)
+ jmp _C_LABEL(_creat)
-_creat:
- jmp __creat
-.text
-.extern __deldma
-.globl _deldma
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_deldma)
+ENTRY(deldma)
+ jmp _C_LABEL(_deldma)
-_deldma:
- jmp __deldma
-.text
-.extern __dup
-.globl _dup
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_dup)
+ENTRY(dup)
+ jmp _C_LABEL(_dup)
-_dup:
- jmp __dup
-.text
-.extern __dup2
-.globl _dup2
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_dup2)
+ENTRY(dup2)
+ jmp _C_LABEL(_dup2)
-_dup2:
- jmp __dup2
-.text
-.extern __execl
-.globl _execl
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_execl)
+ENTRY(execl)
+ jmp _C_LABEL(_execl)
-_execl:
- jmp __execl
-.text
-.extern __execle
-.globl _execle
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_execle)
+ENTRY(execle)
+ jmp _C_LABEL(_execle)
-_execle:
- jmp __execle
-.text
-.extern __execlp
-.globl _execlp
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_execlp)
+ENTRY(execlp)
+ jmp _C_LABEL(_execlp)
-_execlp:
- jmp __execlp
-.text
-.extern __execv
-.globl _execv
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_execv)
+ENTRY(execv)
+ jmp _C_LABEL(_execv)
-_execv:
- jmp __execv
-.text
-.extern __execve
-.globl _execve
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_execve)
+ENTRY(execve)
+ jmp _C_LABEL(_execve)
-_execve:
- jmp __execve
-.text
-.extern __execvp
-.globl _execvp
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_execvp)
+ENTRY(execvp)
+ jmp _C_LABEL(_execvp)
-_execvp:
- jmp __execvp
-.text
-.extern __fchmod
-.globl _fchmod
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_fchmod)
+ENTRY(fchmod)
+ jmp _C_LABEL(_fchmod)
-_fchmod:
- jmp __fchmod
-.text
-.extern __fchown
-.globl _fchown
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_fchown)
+ENTRY(fchown)
+ jmp _C_LABEL(_fchown)
-_fchown:
- jmp __fchown
-.text
-.extern __fcntl
-.globl _fcntl
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_fcntl)
+ENTRY(fcntl)
+ jmp _C_LABEL(_fcntl)
-_fcntl:
- jmp __fcntl
-.text
-.extern __fork
-.globl _fork
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_fork)
+ENTRY(fork)
+ jmp _C_LABEL(_fork)
-_fork:
- jmp __fork
-.text
-.extern __fpathconf
-.globl _fpathconf
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_fpathconf)
+ENTRY(fpathconf)
+ jmp _C_LABEL(_fpathconf)
-_fpathconf:
- jmp __fpathconf
-.text
-.extern __fstat
-.globl _fstat
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_fstat)
+ENTRY(fstat)
+ jmp _C_LABEL(_fstat)
-_fstat:
- jmp __fstat
-.text
-.extern __fstatfs
-.globl _fstatfs
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_fstatfs)
+ENTRY(fstatfs)
+ jmp _C_LABEL(_fstatfs)
-_fstatfs:
- jmp __fstatfs
-.text
-.extern __fstatvfs
-.globl _fstatvfs
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_fstatvfs)
+ENTRY(fstatvfs)
+ jmp _C_LABEL(_fstatvfs)
-_fstatvfs:
- jmp __fstatvfs
-.text
-.extern __getcwd
-.globl _getcwd
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getcwd)
+ENTRY(getcwd)
+ jmp _C_LABEL(_getcwd)
-_getcwd:
- jmp __getcwd
-.text
-.extern __getdents
-.globl _getdents
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getdents)
+ENTRY(getdents)
+ jmp _C_LABEL(_getdents)
-_getdents:
- jmp __getdents
-.text
-.extern __getdma
-.globl _getdma
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getdma)
+ENTRY(getdma)
+ jmp _C_LABEL(_getdma)
-_getdma:
- jmp __getdma
-.text
-.extern __getegid
-.globl _getegid
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getegid)
+ENTRY(getegid)
+ jmp _C_LABEL(_getegid)
-_getegid:
- jmp __getegid
-.text
-.extern __geteuid
-.globl _geteuid
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_geteuid)
+ENTRY(geteuid)
+ jmp _C_LABEL(_geteuid)
-_geteuid:
- jmp __geteuid
-.text
-.extern __getgid
-.globl _getgid
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getgid)
+ENTRY(getgid)
+ jmp _C_LABEL(_getgid)
-_getgid:
- jmp __getgid
-.text
-.extern __getgroups
-.globl _getgroups
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getgroups)
+ENTRY(getgroups)
+ jmp _C_LABEL(_getgroups)
-_getgroups:
- jmp __getgroups
-.text
-.extern __getitimer
-.globl _getitimer
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getitimer)
+ENTRY(getitimer)
+ jmp _C_LABEL(_getitimer)
-_getitimer:
- jmp __getitimer
-.text
-.extern __getngid
-.globl _getngid
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getngid)
+ENTRY(getngid)
+ jmp _C_LABEL(_getngid)
-_getngid:
- jmp __getngid
-.text
-.extern __getnpid
-.globl _getnpid
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getnpid)
+ENTRY(getnpid)
+ jmp _C_LABEL(_getnpid)
-_getnpid:
- jmp __getnpid
-.text
-.extern __getnprocnr
-.globl _getnprocnr
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getnprocnr)
+ENTRY(getnprocnr)
+ jmp _C_LABEL(_getnprocnr)
-_getnprocnr:
- jmp __getnprocnr
-.text
-.extern __getnucred
-.globl _getnucred
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getnucred)
+ENTRY(getnucred)
+ jmp _C_LABEL(_getnucred)
-_getnucred:
- jmp __getnucred
-.text
-.extern __getnuid
-.globl _getnuid
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getnuid)
+ENTRY(getnuid)
+ jmp _C_LABEL(_getnuid)
-_getnuid:
- jmp __getnuid
-.text
-.extern __getpgrp
-.globl _getpgrp
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getpgrp)
+ENTRY(getpgrp)
+ jmp _C_LABEL(_getpgrp)
-_getpgrp:
- jmp __getpgrp
-.text
-.extern __getpid
-.globl _getpid
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getpid)
+ENTRY(getpid)
+ jmp _C_LABEL(_getpid)
-_getpid:
- jmp __getpid
-.text
-.extern __getppid
-.globl _getppid
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getppid)
+ENTRY(getppid)
+ jmp _C_LABEL(_getppid)
-_getppid:
- jmp __getppid
-.text
-.extern __getpprocnr
-.globl _getpprocnr
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getpprocnr)
+ENTRY(getpprocnr)
+ jmp _C_LABEL(_getpprocnr)
-_getpprocnr:
- jmp __getpprocnr
-.text
-.extern __getprocnr
-.globl _getprocnr
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getprocnr)
+ENTRY(getprocnr)
+ jmp _C_LABEL(_getprocnr)
-_getprocnr:
- jmp __getprocnr
-.text
-.extern __getsigset
-.globl _getsigset
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getsigset)
+ENTRY(getsigset)
+ jmp _C_LABEL(_getsigset)
-_getsigset:
- jmp __getsigset
-.text
-.extern __getsysinfo
-.globl _getsysinfo
-.extern __getsysinfo_up
-.globl _getsysinfo_up
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getsysinfo)
+ENTRY(getsysinfo)
+ jmp _C_LABEL(_getsysinfo)
+
+IMPORT(_getsysinfo_up)
+ENTRY(getsysinfo_up)
+ jmp _C_LABEL(_getsysinfo_up)
-_getsysinfo:
- jmp __getsysinfo
-_getsysinfo_up:
- jmp __getsysinfo_up
-.text
-.extern __getuid
-.globl _getuid
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_getuid)
+ENTRY(getuid)
+ jmp _C_LABEL(_getuid)
-_getuid:
- jmp __getuid
-.text
-.extern __ioctl
-.globl _ioctl
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_ioctl)
+ENTRY(ioctl)
+ jmp _C_LABEL(_ioctl)
-_ioctl:
- jmp __ioctl
-.text
-.extern __isatty
-.globl _isatty
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_isatty)
+ENTRY(isatty)
+ jmp _C_LABEL(_isatty)
-_isatty:
- jmp __isatty
-.text
-.extern __kill
-.globl _kill
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_kill)
+ENTRY(kill)
+ jmp _C_LABEL(_kill)
-_kill:
- jmp __kill
-.text
-.extern __killpg
-.globl _killpg
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_killpg)
+ENTRY(killpg)
+ jmp _C_LABEL(_killpg)
-_killpg:
- jmp __killpg
-.text
-.extern __link
-.globl _link
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_link)
+ENTRY(link)
+ jmp _C_LABEL(_link)
-_link:
- jmp __link
-.text
-.extern __lseek
-.globl _lseek
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_lseek)
+ENTRY(lseek)
+ jmp _C_LABEL(_lseek)
-_lseek:
- jmp __lseek
-.text
-.extern __lseek64
-.globl _lseek64
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_lseek64)
+ENTRY(lseek64)
+ jmp _C_LABEL(_lseek64)
-_lseek64:
- jmp __lseek64
-.text
-.extern __lstat
-.globl _lstat
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_lstat)
+ENTRY(lstat)
+ jmp _C_LABEL(_lstat)
-_lstat:
- jmp __lstat
-.text
-.extern __mapdriver
-.globl _mapdriver
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_mapdriver)
+ENTRY(mapdriver)
+ jmp _C_LABEL(_mapdriver)
-_mapdriver:
- jmp __mapdriver
-.text
-.extern __mkdir
-.globl _mkdir
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_mkdir)
+ENTRY(mkdir)
+ jmp _C_LABEL(_mkdir)
-_mkdir:
- jmp __mkdir
-.text
-.extern __mkfifo
-.globl _mkfifo
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_mkfifo)
+ENTRY(mkfifo)
+ jmp _C_LABEL(_mkfifo)
-_mkfifo:
- jmp __mkfifo
-.text
-.extern __mknod
-.globl _mknod
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_mknod)
+ENTRY(mknod)
+ jmp _C_LABEL(_mknod)
-_mknod:
- jmp __mknod
-.text
-.extern __mmap
-.globl _mmap
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_mmap)
+ENTRY(mmap)
+ jmp _C_LABEL(_mmap)
-_mmap:
- jmp __mmap
-.text
-.extern __mount
-.globl _mount
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_mount)
+ENTRY(mount)
+ jmp _C_LABEL(_mount)
-_mount:
- jmp __mount
-.text
-.extern __munmap
-.globl _munmap
-.extern __munmap_text
-.globl _munmap_text
-.balign 2
+#include <machine/asm.h>
-_munmap:
- jmp __munmap
+IMPORT(_munmap)
+ENTRY(munmap)
+ jmp _C_LABEL(_munmap)
+
+IMPORT(_munmap_text)
+ENTRY(munmap_text)
+ jmp _C_LABEL(_munmap_text)
-_munmap_text:
- jmp __munmap_text
-.text
-.extern __nanosleep
-.globl _nanosleep
+#include <machine/asm.h>
+
+IMPORT(_nanosleep)
+ENTRY(nanosleep)
+ jmp _C_LABEL(_nanosleep)
-_nanosleep:
- jmp __nanosleep
-.text
-.extern __open
-.globl _open
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_open)
+ENTRY(open)
+ jmp _C_LABEL(_open)
-_open:
- jmp __open
-.text
-.extern __opendir
-.globl _opendir
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_opendir)
+ENTRY(opendir)
+ jmp _C_LABEL(_opendir)
-_opendir:
- jmp __opendir
-.text
-.extern __pathconf
-.globl _pathconf
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_pathconf)
+ENTRY(pathconf)
+ jmp _C_LABEL(_pathconf)
-_pathconf:
- jmp __pathconf
-.text
-.extern __pause
-.globl _pause
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_pause)
+ENTRY(pause)
+ jmp _C_LABEL(_pause)
-_pause:
- jmp __pause
-.text
-.extern __pipe
-.globl _pipe
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_pipe)
+ENTRY(pipe)
+ jmp _C_LABEL(_pipe)
-_pipe:
- jmp __pipe
-.text
-.extern __ptrace
-.globl _ptrace
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_ptrace)
+ENTRY(ptrace)
+ jmp _C_LABEL(_ptrace)
-_ptrace:
- jmp __ptrace
-.text
-.extern __read
-.globl _read
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_read)
+ENTRY(read)
+ jmp _C_LABEL(_read)
-_read:
- jmp __read
-.text
-.extern __readdir
-.globl _readdir
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_readdir)
+ENTRY(readdir)
+ jmp _C_LABEL(_readdir)
-_readdir:
- jmp __readdir
-.text
-.extern __readlink
-.globl _readlink
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_readlink)
+ENTRY(readlink)
+ jmp _C_LABEL(_readlink)
-_readlink:
- jmp __readlink
-.text
-.extern __reboot
-.globl _reboot
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_reboot)
+ENTRY(reboot)
+ jmp _C_LABEL(_reboot)
-_reboot:
- jmp __reboot
-.text
-.extern __rename
-.globl _rename
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_rename)
+ENTRY(rename)
+ jmp _C_LABEL(_rename)
-_rename:
- jmp __rename
-.text
-.extern __rewinddir
-.globl _rewinddir
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_rewinddir)
+ENTRY(rewinddir)
+ jmp _C_LABEL(_rewinddir)
-_rewinddir:
- jmp __rewinddir
-.text
-.extern __rmdir
-.globl _rmdir
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_rmdir)
+ENTRY(rmdir)
+ jmp _C_LABEL(_rmdir)
-_rmdir:
- jmp __rmdir
-.text
-.extern __sbrk
-.globl _sbrk
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_sbrk)
+ENTRY(sbrk)
+ jmp _C_LABEL(_sbrk)
-_sbrk:
- jmp __sbrk
-.text
-.extern __seekdir
-.globl _seekdir
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_seekdir)
+ENTRY(seekdir)
+ jmp _C_LABEL(_seekdir)
-_seekdir:
- jmp __seekdir
-.text
-.extern __select
-.globl _select
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_select)
+ENTRY(select)
+ jmp _C_LABEL(_select)
-_select:
- jmp __select
-.text
-.extern __setgid
-.globl _setgid
-.globl _setegid
-.balign 2
+#include <machine/asm.h>
-_setgid:
- jmp __setgid
+IMPORT(_setgid)
+ENTRY(setgid)
+ jmp _C_LABEL(_setgid)
+
+IMPORT(_setegid)
+ENTRY(setegid)
+ jmp _C_LABEL(_setegid)
-_setegid:
- jmp __setegid
-.text
-.extern __setgroups
-.globl _setgroups
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_setgroups)
+ENTRY(setgroups)
+ jmp _C_LABEL(_setgroups)
-_setgroups:
- jmp __setgroups
-.text
-.extern __setitimer
-.globl _setitimer
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_setitimer)
+ENTRY(setitimer)
+ jmp _C_LABEL(_setitimer)
-_setitimer:
- jmp __setitimer
-.text
-.extern __setsid
-.globl _setsid
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_setsid)
+ENTRY(setsid)
+ jmp _C_LABEL(_setsid)
-_setsid:
- jmp __setsid
-.text
-.extern __setuid
-.globl _setuid
-.globl _seteuid
-.balign 2
+#include <machine/asm.h>
-_setuid:
- jmp __setuid
+IMPORT(_setuid)
+ENTRY(setuid)
+ jmp _C_LABEL(_setuid)
+
+IMPORT(_seteuid)
+ENTRY(seteuid)
+ jmp _C_LABEL(_seteuid)
-_seteuid:
- jmp __seteuid
-.text
-.extern __sigaction
-.globl _sigaction
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_sigaction)
+ENTRY(sigaction)
+ jmp _C_LABEL(_sigaction)
-_sigaction:
- jmp __sigaction
-.text
-.extern __sigaddset
-.globl _sigaddset
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_sigaddset)
+ENTRY(sigaddset)
+ jmp _C_LABEL(_sigaddset)
-_sigaddset:
- jmp __sigaddset
-.text
-.extern __sigdelset
-.globl _sigdelset
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_sigdelset)
+ENTRY(sigdelset)
+ jmp _C_LABEL(_sigdelset)
-_sigdelset:
- jmp __sigdelset
-.text
-.extern __sigemptyset
-.globl _sigemptyset
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_sigemptyset)
+ENTRY(sigemptyset)
+ jmp _C_LABEL(_sigemptyset)
-_sigemptyset:
- jmp __sigemptyset
-.text
-.extern __sigfillset
-.globl _sigfillset
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_sigfillset)
+ENTRY(sigfillset)
+ jmp _C_LABEL(_sigfillset)
-_sigfillset:
- jmp __sigfillset
-.text
-.extern __sigismember
-.globl _sigismember
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_sigismember)
+ENTRY(sigismember)
+ jmp _C_LABEL(_sigismember)
-_sigismember:
- jmp __sigismember
-.text
-.extern __sigpending
-.globl _sigpending
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_sigpending)
+ENTRY(sigpending)
+ jmp _C_LABEL(_sigpending)
-_sigpending:
- jmp __sigpending
-.text
-.extern __sigprocmask
-.globl _sigprocmask
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_sigprocmask)
+ENTRY(sigprocmask)
+ jmp _C_LABEL(_sigprocmask)
-_sigprocmask:
- jmp __sigprocmask
-.text
-.extern __sigreturn
-.globl _sigreturn
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_sigreturn)
+ENTRY(sigreturn)
+ jmp _C_LABEL(_sigreturn)
-_sigreturn:
- jmp __sigreturn
-.text
-.extern __sigsuspend
-.globl _sigsuspend
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_sigsuspend)
+ENTRY(sigsuspend)
+ jmp _C_LABEL(_sigsuspend)
-_sigsuspend:
- jmp __sigsuspend
-.text
-.extern __sleep
-.globl _sleep
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_sleep)
+ENTRY(sleep)
+ jmp _C_LABEL(_sleep)
-_sleep:
- jmp __sleep
-.text
-.extern __sprofile
-.globl _sprofile
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_sprofile)
+ENTRY(sprofile)
+ jmp _C_LABEL(_sprofile)
-_sprofile:
- jmp __sprofile
-.text
-.extern __stat
-.globl _stat
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_stat)
+ENTRY(stat)
+ jmp _C_LABEL(_stat)
-_stat:
- jmp __stat
-.text
-.extern __statvfs
-.globl _statvfs
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_statvfs)
+ENTRY(statvfs)
+ jmp _C_LABEL(_statvfs)
-_statvfs:
- jmp __statvfs
-.text
-.extern __stime
-.globl _stime
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_stime)
+ENTRY(stime)
+ jmp _C_LABEL(_stime)
-_stime:
- jmp __stime
-.text
-.extern __svrctl
-.globl _svrctl
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_svrctl)
+ENTRY(svrctl)
+ jmp _C_LABEL(_svrctl)
-_svrctl:
- jmp __svrctl
-.text
-.extern __symlink
-.globl _symlink
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_symlink)
+ENTRY(symlink)
+ jmp _C_LABEL(_symlink)
-_symlink:
- jmp __symlink
-.text
-.extern __sync
-.globl _sync
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_sync)
+ENTRY(sync)
+ jmp _C_LABEL(_sync)
-_sync:
- jmp __sync
-.text
-.extern __sysuname
-.globl _sysuname
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_sysuname)
+ENTRY(sysuname)
+ jmp _C_LABEL(_sysuname)
-_sysuname:
- jmp __sysuname
-.text
-.extern __tcdrain
-.globl _tcdrain
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_tcdrain)
+ENTRY(tcdrain)
+ jmp _C_LABEL(_tcdrain)
-_tcdrain:
- jmp __tcdrain
-.text
-.extern __tcflow
-.globl _tcflow
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_tcflow)
+ENTRY(tcflow)
+ jmp _C_LABEL(_tcflow)
-_tcflow:
- jmp __tcflow
-.text
-.extern __tcflush
-.globl _tcflush
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_tcflush)
+ENTRY(tcflush)
+ jmp _C_LABEL(_tcflush)
-_tcflush:
- jmp __tcflush
-.text
-.extern __tcgetattr
-.globl _tcgetattr
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_tcgetattr)
+ENTRY(tcgetattr)
+ jmp _C_LABEL(_tcgetattr)
-_tcgetattr:
- jmp __tcgetattr
-.text
-.extern __tcsendbreak
-.globl _tcsendbreak
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_tcsendbreak)
+ENTRY(tcsendbreak)
+ jmp _C_LABEL(_tcsendbreak)
-_tcsendbreak:
- jmp __tcsendbreak
-.text
-.extern __tcsetattr
-.globl _tcsetattr
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_tcsetattr)
+ENTRY(tcsetattr)
+ jmp _C_LABEL(_tcsetattr)
-_tcsetattr:
- jmp __tcsetattr
-.text
-.extern __time
-.globl _time
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_time)
+ENTRY(time)
+ jmp _C_LABEL(_time)
-_time:
- jmp __time
-.text
-.extern __times
-.globl _times
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_times)
+ENTRY(times)
+ jmp _C_LABEL(_times)
-_times:
- jmp __times
-.text
-.extern __truncate
-.extern __ftruncate
-.globl _truncate
-.globl _ftruncate
-.balign 2
+#include <machine/asm.h>
-_truncate:
- jmp __truncate
+IMPORT(_truncate)
+ENTRY(truncate)
+ jmp _C_LABEL(_truncate)
+
+IMPORT(_ftruncate)
+ENTRY(ftruncate)
+ jmp _C_LABEL(_ftruncate)
-.balign 2
-_ftruncate:
- jmp __ftruncate
-.text
-.extern __umask
-.globl _umask
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_umask)
+ENTRY(umask)
+ jmp _C_LABEL(_umask)
-_umask:
- jmp __umask
-.text
-.extern __umount
-.globl _umount
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_umount)
+ENTRY(umount)
+ jmp _C_LABEL(_umount)
-_umount:
- jmp __umount
-.text
-.extern __uname
-.globl _uname
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_uname)
+ENTRY(uname)
+ jmp _C_LABEL(_uname)
-_uname:
- jmp __uname
-.text
-.extern __unlink
-.globl _unlink
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_unlink)
+ENTRY(unlink)
+ jmp _C_LABEL(_unlink)
-_unlink:
- jmp __unlink
-.text
-.extern __utime
-.globl _utime
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_utime)
+ENTRY(utime)
+ jmp _C_LABEL(_utime)
-_utime:
- jmp __utime
-.text
-.extern __vm_adddma
-.globl _vm_adddma
-.extern __vm_deldma
-.globl _vm_deldma
-.extern __vm_getdma
-.globl _vm_getdma
-.balign 2
-
-_vm_adddma:
- jmp __vm_adddma
-_vm_deldma:
- jmp __vm_deldma
-_vm_getdma:
- jmp __vm_getdma
+#include <machine/asm.h>
+
+IMPORT(_vm_adddma)
+ENTRY(vm_adddma)
+ jmp _C_LABEL(_vm_adddma)
+
+IMPORT(_vm_deldma)
+ENTRY(vm_deldma)
+ jmp _C_LABEL(_vm_deldma)
+
+IMPORT(_vm_getdma)
+ENTRY(vm_getdma)
+ jmp _C_LABEL(_vm_getdma)
+
-.text
-.extern __vm_getphys
-.globl _vm_getphys
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_vm_getphys)
+ENTRY(vm_getphys)
+ jmp _C_LABEL(_vm_getphys)
-_vm_getphys:
- jmp __vm_getphys
-.text
-.extern __vm_getrefcount
-.globl _vm_getrefcount
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_vm_getrefcount)
+ENTRY(vm_getrefcount)
+ jmp _C_LABEL(_vm_getrefcount)
-_vm_getrefcount:
- jmp __vm_getrefcount
-.text
-.extern __vm_memctl
-.globl _vm_memctl
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_vm_memctl)
+ENTRY(vm_memctl)
+ jmp _C_LABEL(_vm_memctl)
-_vm_memctl:
- jmp __vm_memctl
-.text
-.extern __vm_query_exit
-.globl _vm_query_exit
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_vm_query_exit)
+ENTRY(vm_query_exit)
+ jmp _C_LABEL(_vm_query_exit)
-_vm_query_exit:
- jmp __vm_query_exit
-.text
-.extern __vm_remap
-.globl _vm_remap
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_vm_remap)
+ENTRY(vm_remap)
+ jmp _C_LABEL(_vm_remap)
-_vm_remap:
- jmp __vm_remap
-.text
-.extern __vm_set_priv
-.globl _vm_set_priv
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_vm_set_priv)
+ENTRY(vm_set_priv)
+ jmp _C_LABEL(_vm_set_priv)
-_vm_set_priv:
- jmp __vm_set_priv
-.text
-.extern __vm_unmap
-.globl _vm_unmap
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_vm_unmap)
+ENTRY(vm_unmap)
+ jmp _C_LABEL(_vm_unmap)
-_vm_unmap:
- jmp __vm_unmap
-.text
-.extern __vm_update
-.globl _vm_update
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_vm_update)
+ENTRY(vm_update)
+ jmp _C_LABEL(_vm_update)
-_vm_update:
- jmp __vm_update
-.text
-.extern __wait
-.globl _wait
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_wait)
+ENTRY(wait)
+ jmp _C_LABEL(_wait)
-_wait:
- jmp __wait
-.text
-.extern __waitpid
-.globl _waitpid
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_waitpid)
+ENTRY(waitpid)
+ jmp _C_LABEL(_waitpid)
-_waitpid:
- jmp __waitpid
-.text
-.extern __write
-.globl _write
-.balign 2
+#include <machine/asm.h>
+
+IMPORT(_write)
+ENTRY(write)
+ jmp _C_LABEL(_write)
-_write:
- jmp __write
/* Part of libhgfs - (c) 2009, D.C. van Moolenbroek */
-
-.globl ___libhgfs_backdoor
-.globl ___libhgfs_backdoor_in
-.globl ___libhgfs_backdoor_out
+#include <machine/asm.h>
.text
BD_PORT = 0x5658
IO_PORT = 0x5659
-.balign 16
-___libhgfs_backdoor:
+ENTRY(__libhgfs_backdoor)
pushl %ebx
pushl %esi
pushl %edi
popl %ebx
ret
-.balign 16
-___libhgfs_backdoor_in:
+ENTRY(__libhgfs_backdoor_in)
pushl %ebx
pushl %esi
pushl %edi
popl %ebx
ret
-.balign 16
-___libhgfs_backdoor_out:
+ENTRY(__libhgfs_backdoor_out)
pushl %ebx
pushl %esi
pushl %edi
/* */
/* sections */
+#include <machine/asm.h>
-
-.globl _read_tsc /* read the cycle counter (Pentium and up) */
-.text
/**===========================================================================* */
/* PUBLIC void read_tsc(unsigned long *high, unsigned long *low); */
/* Read the cycle counter of the CPU. Pentium and up. */
-.balign 16
-_read_tsc:
+ENTRY(read_tsc)
push %edx
push %eax
.byte 0x0f /* this is the RDTSC instruction */
/**===========================================================================* */
/* PUBLIC void read_host_time_ns(unsigned long *high, unsigned long *low); */
/* access real time in ns from host in vmware. */
-.balign 16
-_read_host_time_ns:
+ENTRY(read_host_time_ns)
pushl %edx
pushl %eax
pushl %ecx
-.globl _i386_invlpg
-
-.text
+#include <machine/asm.h>
/**===========================================================================* */
/** i386_invlpg * */
/**===========================================================================* */
/* PUBLIC void i386_invlpg(u32_t addr) */
/* Tell the processor to invalidate a tlb entry at virtual address addr. */
-_i386_invlpg:
+ENTRY(i386_invlpg)
push %ebp
mov %esp, %ebp
push %eax
+#include <machine/asm.h>
-.globl _check_context_loop
-.globl _remaining_invocations
-.globl _origstate
-.globl _newstate
+IMPORT(remaining_invocations)
+IMPORT(origstate)
+IMPORT(newstate)
#define JUNK 0xCC0FFEE0
COPY(dest, 0); COPY(dest, 1); COPY(dest, 2); COPY(dest, 3); \
COPY(dest, 4); COPY(dest, 5); COPY(dest, 6); COPY(dest, 7);
-.text
/* void check_context_loop() */
-_check_context_loop:
+ENTRY(check_context_loop)
/* Save original context so we can restore it. */
pusha
pusha
cont:
/* Check if we're done. */
- cmpl $0, (_remaining_invocations)
+ cmpl $0, (_C_LABEL(remaining_invocations))
jz done
/* We're not done. */
* so we can copy it.
*/
pusha
- COPYA(_newstate);
+ COPYA(_C_LABEL(newstate));
popa
/* copy and restore junked state */
- COPYA(_origstate);
+ COPYA(_C_LABEL(origstate));
popa
/* restore original state and return */