mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
[IA64][MINIOS] Make mini-os ia64 cross compile-able
Signed-off-by: Tristan Gingold <tgingold@free.fr>
This commit is contained in:
1 parent
645be831a6
commit
097dd8288c
2 files changed
+22
-55
No files matched your search
@@ -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)
|
||||
@@ -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;
|
||||
}
|
||||