Commit da998a2a authored by Al Viro's avatar Al Viro Committed by Linus Torvalds

[PATCH] uml: cross-build support : mk_task and mk_constants

helpers in arch/um/util (mk_task and mk_constants) converted.  That's it -
none of the helpers depends on build and target being the same architecture
anymore.
Signed-off-by: default avatarAl Viro <viro@parcelfarce.linux.theplanet.co.uk>
Signed-off-by: default avatarJeff Dike <jdike@addtoit.com>
Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 2b8b611e
...@@ -206,7 +206,7 @@ $(ARCH_DIR)/util/mk_task $(ARCH_DIR)/util/mk_constants: $(ARCH_DIR)/include/user ...@@ -206,7 +206,7 @@ $(ARCH_DIR)/util/mk_task $(ARCH_DIR)/util/mk_constants: $(ARCH_DIR)/include/user
$(ARCH_DIR)/kernel/skas/util/mk_ptregs: $(ARCH_DIR)/kernel/skas/util FORCE ; $(ARCH_DIR)/kernel/skas/util/mk_ptregs: $(ARCH_DIR)/kernel/skas/util FORCE ;
$(ARCH_DIR)/util: scripts_basic $(SYS_DIR)/sc.h FORCE $(ARCH_DIR)/util: scripts_basic $(SYS_DIR)/sc.h $(ARCH_DIR)/kernel-offsets.h FORCE
$(Q)$(MAKE) $(build)=$@ $(Q)$(MAKE) $(build)=$@
$(ARCH_DIR)/kernel/skas/util: scripts_basic $(ARCH_DIR)/user-offsets.h FORCE $(ARCH_DIR)/kernel/skas/util: scripts_basic $(ARCH_DIR)/user-offsets.h FORCE
......
hostprogs-y := mk_task mk_constants hostprogs-y := mk_task mk_constants
always := $(hostprogs-y) always := $(hostprogs-y)
mk_task-objs := mk_task_user.o mk_task_kern.o HOSTCFLAGS_mk_task.o := -I$(objtree)/arch/um
mk_constants-objs := mk_constants_user.o mk_constants_kern.o HOSTCFLAGS_mk_constants.o := -I$(objtree)/arch/um
HOSTCFLAGS_mk_task_kern.o := $(CFLAGS) $(CPPFLAGS)
HOSTCFLAGS_mk_constants_kern.o := $(CFLAGS) $(CPPFLAGS)
#include <stdio.h> #include <stdio.h>
#include <kernel-offsets.h>
void print_head(void) #define SHOW_INT(sym) printf("#define %s %d\n", #sym, sym)
#define SHOW_STR(sym) printf("#define %s %s\n", #sym, sym)
int main(int argc, char **argv)
{ {
printf("/*\n"); printf("/*\n");
printf(" * Generated by mk_constants\n"); printf(" * Generated by mk_constants\n");
...@@ -9,20 +13,20 @@ void print_head(void) ...@@ -9,20 +13,20 @@ void print_head(void)
printf("#ifndef __UM_CONSTANTS_H\n"); printf("#ifndef __UM_CONSTANTS_H\n");
printf("#define __UM_CONSTANTS_H\n"); printf("#define __UM_CONSTANTS_H\n");
printf("\n"); printf("\n");
}
void print_constant_str(char *name, char *value) SHOW_INT(UM_KERN_PAGE_SIZE);
{
printf("#define %s \"%s\"\n", name, value);
}
void print_constant_int(char *name, int value) SHOW_STR(UM_KERN_EMERG);
{ SHOW_STR(UM_KERN_ALERT);
printf("#define %s %d\n", name, value); SHOW_STR(UM_KERN_CRIT);
} SHOW_STR(UM_KERN_ERR);
SHOW_STR(UM_KERN_WARNING);
SHOW_STR(UM_KERN_NOTICE);
SHOW_STR(UM_KERN_INFO);
SHOW_STR(UM_KERN_DEBUG);
void print_tail(void) SHOW_INT(UM_NSEC_PER_SEC);
{
printf("\n"); printf("\n");
printf("#endif\n"); printf("#endif\n");
return(0);
} }
#include "linux/kernel.h"
#include "linux/stringify.h"
#include "linux/time.h"
#include "asm/page.h"
extern void print_head(void);
extern void print_constant_str(char *name, char *value);
extern void print_constant_int(char *name, int value);
extern void print_tail(void);
int main(int argc, char **argv)
{
print_head();
print_constant_int("UM_KERN_PAGE_SIZE", PAGE_SIZE);
print_constant_str("UM_KERN_EMERG", KERN_EMERG);
print_constant_str("UM_KERN_ALERT", KERN_ALERT);
print_constant_str("UM_KERN_CRIT", KERN_CRIT);
print_constant_str("UM_KERN_ERR", KERN_ERR);
print_constant_str("UM_KERN_WARNING", KERN_WARNING);
print_constant_str("UM_KERN_NOTICE", KERN_NOTICE);
print_constant_str("UM_KERN_INFO", KERN_INFO);
print_constant_str("UM_KERN_DEBUG", KERN_DEBUG);
print_constant_int("UM_NSEC_PER_SEC", NSEC_PER_SEC);
print_tail();
return(0);
}
#include <stdio.h> #include <stdio.h>
#include <kernel-offsets.h>
void print(char *name, char *type, int offset) void print_ptr(char *name, char *type, int offset)
{ {
printf("#define %s(task) *((%s *) &(((char *) (task))[%d]))\n", name, type, printf("#define %s(task) ((%s *) &(((char *) (task))[%d]))\n", name, type,
offset); offset);
} }
void print_ptr(char *name, char *type, int offset) void print(char *name, char *type, int offset)
{ {
printf("#define %s(task) ((%s *) &(((char *) (task))[%d]))\n", name, type, printf("#define %s(task) *((%s *) &(((char *) (task))[%d]))\n", name, type,
offset); offset);
} }
void print_head(void) int main(int argc, char **argv)
{ {
printf("/*\n"); printf("/*\n");
printf(" * Generated by mk_task\n"); printf(" * Generated by mk_task\n");
...@@ -21,10 +22,9 @@ void print_head(void) ...@@ -21,10 +22,9 @@ void print_head(void)
printf("#ifndef __TASK_H\n"); printf("#ifndef __TASK_H\n");
printf("#define __TASK_H\n"); printf("#define __TASK_H\n");
printf("\n"); printf("\n");
} print_ptr("TASK_REGS", "union uml_pt_regs", TASK_REGS);
print("TASK_PID", "int", TASK_PID);
void print_tail(void)
{
printf("\n"); printf("\n");
printf("#endif\n"); printf("#endif\n");
return(0);
} }
#include "linux/sched.h"
#include "linux/stddef.h"
extern void print(char *name, char *type, int offset);
extern void print_ptr(char *name, char *type, int offset);
extern void print_head(void);
extern void print_tail(void);
int main(int argc, char **argv)
{
print_head();
print_ptr("TASK_REGS", "union uml_pt_regs",
offsetof(struct task_struct, thread.regs));
print("TASK_PID", "int", offsetof(struct task_struct, pid));
print_tail();
return(0);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment