import genassym and use it for sconst.h in kernel
This commit is contained in:
@@ -2,7 +2,8 @@
|
||||
# Makefile for arch-dependent kernel code
|
||||
.include <bsd.own.mk>
|
||||
|
||||
.PATH: ${.CURDIR}/arch/${ARCH}
|
||||
HERE=${.CURDIR}/arch/${ARCH}
|
||||
.PATH: ${HERE}
|
||||
SRCS+= arch_do_vmctl.c \
|
||||
arch_clock.c \
|
||||
do_int86.c \
|
||||
@@ -27,6 +28,20 @@ SRCS+= arch_do_vmctl.c \
|
||||
arch_system.c \
|
||||
pre_init.c
|
||||
|
||||
apic_asm.d klib.d mpx.d: procoffsets.h
|
||||
|
||||
# It's OK to hardcode the arch as i386 here as this and procoffsets.cf
|
||||
# are i386-specific.
|
||||
TMP=procoffsets.h.tmp
|
||||
INCLS=../include/arch/i386/include/
|
||||
PROCOFFSETSCF=procoffsets.cf
|
||||
|
||||
procoffsets.h: $(PROCOFFSETSCF) kernel.h proc.h $(INCLS)/stackframe.h $(INCLS)/archtypes.h
|
||||
${_MKTARGET_CREATE}
|
||||
cat ${HERE}/$(PROCOFFSETSCF) | \
|
||||
${TOOL_GENASSYM} -- ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} >$TMP && \
|
||||
mv -f $TMP $@
|
||||
|
||||
.ifdef CONFIG_SMP
|
||||
SRCS += arch_smp.c trampoline.S
|
||||
.endif
|
||||
|
||||
29
kernel/arch/i386/procoffsets.cf
Normal file
29
kernel/arch/i386/procoffsets.cf
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
include "kernel.h"
|
||||
include "proc.h"
|
||||
|
||||
struct proc
|
||||
member GSREG p_reg.gs
|
||||
member FSREG p_reg.fs
|
||||
member ESREG p_reg.es
|
||||
member DSREG p_reg.ds
|
||||
member DIREG p_reg.di
|
||||
member SIREG p_reg.si
|
||||
member BPREG p_reg.fp
|
||||
member STREG p_reg.st
|
||||
member BXREG p_reg.bx
|
||||
member DXREG p_reg.dx
|
||||
member CXREG p_reg.cx
|
||||
member AXREG p_reg.retreg
|
||||
member RETADR p_reg.retadr
|
||||
member PCREG p_reg.pc
|
||||
member CSREG p_reg.cs
|
||||
member PSWREG p_reg.psw
|
||||
member SPREG p_reg.sp
|
||||
member SSREG p_reg.ss
|
||||
member FP_SAVE_AREA_P p_fpu_state
|
||||
member P_LDT_SEL p_seg.p_ldt_sel
|
||||
member P_CR3 p_seg.p_cr3
|
||||
member P_CR3_V p_seg.p_cr3_v
|
||||
member P_LDT p_seg.p_ldt
|
||||
|
||||
@@ -2,39 +2,7 @@
|
||||
#define __SCONST_H__
|
||||
|
||||
#include "kernel/const.h"
|
||||
|
||||
/* Miscellaneous constants used in assembler code. */
|
||||
W = _WORD_SIZE /* Machine word size. */
|
||||
|
||||
/* Offsets in struct proc. They MUST match proc.h. */
|
||||
P_STACKBASE = 0
|
||||
GSREG = P_STACKBASE
|
||||
FSREG = GSREG+2 /* 386 introduces FS and GS segments*/
|
||||
ESREG = FSREG+2
|
||||
DSREG = ESREG+2
|
||||
DIREG = DSREG+2
|
||||
SIREG = DIREG+W
|
||||
BPREG = SIREG+W
|
||||
STREG = BPREG+W /* hole for another SP*/
|
||||
BXREG = STREG+W
|
||||
DXREG = BXREG+W
|
||||
CXREG = DXREG+W
|
||||
AXREG = CXREG+W
|
||||
RETADR = AXREG+W /* return address for save() call*/
|
||||
PCREG = RETADR+W
|
||||
CSREG = PCREG+W
|
||||
PSWREG = CSREG+W
|
||||
SPREG = PSWREG+W
|
||||
SSREG = SPREG+W
|
||||
P_STACKTOP = SSREG+W
|
||||
FP_SAVE_AREA_P = P_STACKTOP
|
||||
P_LDT_SEL = FP_SAVE_AREA_P + 532
|
||||
P_CR3 = P_LDT_SEL+W
|
||||
P_CR3_V = P_CR3+4
|
||||
P_LDT = P_CR3_V+W
|
||||
P_MISC_FLAGS = P_LDT + 50
|
||||
Msize = 9 /* size of a message in 32-bit words*/
|
||||
|
||||
#include "kernel/procoffsets.h"
|
||||
|
||||
/*
|
||||
* offset to current process pointer right after trap, we assume we always have
|
||||
|
||||
Reference in New Issue
Block a user