[IA64][MINIOS] Make mini-os ia64 cross compile-able

Signed-off-by: Tristan Gingold <tgingold@free.fr>
This commit is contained in:
awilliam@xenbuild2.aw committed 2007-02-28 09:40:36 -07:00
1 parent 645be831a6
commit 097dd8288c
2 files changed
+22 -55

No files matched your search

+9 -6
View File
@@ -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)
+13 -49
View File
@@ -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;
}
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.