diff options
author | awilliam@xenbuild2.aw <awilliam@xenbuild2.aw> | 2007-02-28 09:40:36 -0700 |
---|---|---|
committer | awilliam@xenbuild2.aw <awilliam@xenbuild2.aw> | 2007-02-28 09:40:36 -0700 |
commit | 097dd8288c8e15607ba0eabdff69b8ea602fc262 (patch) | |
tree | 51446f9ee4b2b1943269569cd87b7812121a5c26 /extras/mini-os/arch | |
parent | 645be831a6023284417ecaeffaab3bd190d01809 (diff) | |
download | xen-097dd8288c8e15607ba0eabdff69b8ea602fc262.tar.gz xen-097dd8288c8e15607ba0eabdff69b8ea602fc262.tar.bz2 xen-097dd8288c8e15607ba0eabdff69b8ea602fc262.zip |
[IA64][MINIOS] Make mini-os ia64 cross compile-able
Signed-off-by: Tristan Gingold <tgingold@free.fr>
Diffstat (limited to 'extras/mini-os/arch')
-rw-r--r-- | extras/mini-os/arch/ia64/Makefile | 15 | ||||
-rw-r--r-- | extras/mini-os/arch/ia64/gen_off.c | 62 |
2 files changed, 22 insertions, 55 deletions
diff --git a/extras/mini-os/arch/ia64/Makefile b/extras/mini-os/arch/ia64/Makefile index 6a7088564f..2c9a627ec4 100644 --- a/extras/mini-os/arch/ia64/Makefile +++ b/extras/mini-os/arch/ia64/Makefile @@ -2,6 +2,9 @@ # Special makefile for ia64. # +XEN_ROOT = ../../../.. +include $(XEN_ROOT)/Config.mk + include arch.mk include ../../minios.mk @@ -36,21 +39,21 @@ ARCH_OBJS += __udivdi3.o ARCH_OBJS += __divdi3.o GEN_OFF_SRC := gen_off.c -GEN_OFF_BIN := gen_off +GEN_OFF_ASM := gen_off.s GEN_OFF_H := $(ARCH_INC)/offsets.h all: $(ARCH_LIB) -$(GEN_OFF_BIN): $(GEN_OFF_SRC) - $(CC) -o $@ $(CPPFLAGS) $< +$(GEN_OFF_ASM): $(GEN_OFF_SRC) + $(CC) -S -o $@ $(CPPFLAGS) $< -$(GEN_OFF_H): $(GEN_OFF_BIN) - ./$(GEN_OFF_BIN) > $(GEN_OFF_H) +$(GEN_OFF_H): $(GEN_OFF_ASM) + sed -ne "/^->/ {s/->/#define /; p}" < $< > $@ $(ARCH_LIB): $(GEN_OFF_H) $(ARCH_OBJS) $(HEAD_ARCH_OBJ) $(AR) rv $(ARCH_LIB) $(ARCH_OBJS) clean: rm -f $(ARCH_LIB) $(ARCH_OBJS) $(HEAD_ARCH_OBJ) - rm -f $(GEN_OFF_BIN) + rm -f $(GEN_OFF_ASM) rm -f $(GEN_OFF_H) diff --git a/extras/mini-os/arch/ia64/gen_off.c b/extras/mini-os/arch/ia64/gen_off.c index b5d2f15c1e..2c67a8c352 100644 --- a/extras/mini-os/arch/ia64/gen_off.c +++ b/extras/mini-os/arch/ia64/gen_off.c @@ -25,19 +25,25 @@ * SUCH DAMAGE. * */ - -#include <stdio.h> -#include <stddef.h> -#include <string.h> #include "types.h" #include "sched.h" #include "xen/xen.h" #include "xen/arch-ia64.h" +#define DEFINE(sym, val) \ + asm volatile("\n->" sym " %0 /* " #val " */": : "i" (val)) +#define DEFINE_STR2(sym, pfx, val) \ + asm volatile("\n->" sym " " pfx "%0" : : "i"(val)); + #define SZ(st,e) sizeof(((st *)0)->e) -#define OFF(st,e,d,o) print_define(fp, #d, offsetof(st, e) + o, SZ(st, e)) +#define OFF(st,e,d,o) \ + DEFINE(#d, offsetof(st, e) + o); \ + DEFINE(#d "_sz", SZ(st,e )); \ + DEFINE_STR2(#d "_ld", "ld", SZ(st, e)); \ + DEFINE_STR2(#d "_st", "st", SZ(st, e)); + #define TFOFF(e,d) OFF(trap_frame_t, e, d, 0) -#define SIZE(st,d) fprintf(fp, "#define %-30s\t0x%016lx\n", #d, sizeof(st)) +#define SIZE(st,d) DEFINE(#d, sizeof(st)) #define SWOFF(e,d) OFF(struct thread, e, d, 0) @@ -46,51 +52,9 @@ /* mapped_regs_t from xen/arch-ia64.h */ #define MR_OFF(e, d) OFF(mapped_regs_t, e, d, XMAPPEDREGS_OFS) -void -print_define(FILE *fp, char *name, uint64_t val, int size) -{ - char ld_name[64]; - char st_name[64]; - char sz_name[64]; - - strcpy(ld_name, name); - strcat(ld_name, "_ld"); - strcpy(st_name, name); - strcat(st_name, "_st"); - strcpy(sz_name, name); - strcat(sz_name, "_sz"); - fprintf(fp, "#define %-30s\t0x%016lx\n", name, val); - fprintf(fp, "#define %-30s\t%u\n", sz_name, size); - switch (size) { - case 1: - fprintf(fp, "#define %-30s\tld1\n", ld_name); - fprintf(fp, "#define %-30s\tst1\n", st_name); - break; - case 2: - fprintf(fp, "#define %-30s\tld2\n", ld_name); - fprintf(fp, "#define %-30s\tst2\n", st_name); - break; - case 4: - fprintf(fp, "#define %-30s\tld4\n", ld_name); - fprintf(fp, "#define %-30s\tst4\n", st_name); - break; - case 8: - fprintf(fp, "#define %-30s\tld8\n", ld_name); - fprintf(fp, "#define %-30s\tst8\n", st_name); - break; - default: ; - } - return; -} - - int main(int argc, char ** argv) { - FILE *fp; - - fp = stdout; - TFOFF(cfm, TF_CFM); TFOFF(pfs, TF_PFS); TFOFF(bsp, TF_BSP); @@ -173,5 +137,5 @@ main(int argc, char ** argv) MR_OFF(bank1_regs[0], XSI_BANK1_R16_OFS); MR_OFF(precover_ifs, XSI_PRECOVER_IFS_OFS); - return(0); + return 0; } |