Skip to contentSkip to conversation

: linux-2.5.49-uc0 (MMU-less fix ups)

PATCH In review Greg Ungerer 2 participants 3 messages Nov 23, 2002 – Nov 26, 2002 1 message not in the archive

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 : linux-2.5.49-uc0 (MMU-less fix ups)

Hi All,

An update of the uClinux (MMU-less) fixups against 2.5.49. Nothing much new, this is just keeping the fixes up to date.

http://www.uclinux.org/pub/uClinux/uClinux-2.5.x/linux-2.5.49-uc0.patch.gz

Changelog:

1. patch against 2.5.49 (me)
2. v850 additions (Miles Bader)

Also updated:

. Motorola 68328 framebuffer driver
http://www.uclinux.org/pub/uClinux/uClinux-2.5.x/linux-2.5.49-uc0-68328fb.patch.gz

. Hitachi H8300 achitecture support
http://www.uclinux.org/pub/uClinux/uClinux-2.5.x/linux-2.5.49-uc0-h8300.patch.gz

Regards
Greg

------------------------------------------------------------------------
Greg Ungerer -- Chief Software Wizard EMAIL: [email protected]
Snapgear Pty Ltd PHONE: +61 7 3279 1822
825 Stanley St, FAX: +61 7 3279 1820
Woolloongabba, QLD, 4102, Australia WEB: www.SnapGear.com

#1 lore raw

v850 update for 2.5.49-uc0:

v850/as85ep1.ld renamed from orig/linux-2.5.49-uc0/arch/v850/as85ep1.ld +6 -4
diff -ruN -X../cludes ../orig/linux-2.5.49-uc0/arch/v850/as85ep1.ld arch/v850/as85ep1.ld
@@ -13,10 +13,11 @@
        /* 1MB of static RAM.  */
        SRAM  : ORIGIN = 0x00400000, LENGTH = 0x00100000
 
-       /* 64MB of DRAM.  This can actually be at one of two positions,
-       determined by jump JP3; we use the second position because the
-       first only allows access to 56MB.  */
-       SDRAM : ORIGIN = 0x04000000, LENGTH = 0x04000000
+       /* About 58MB of DRAM.  This can actually be at one of two positions,
+	  determined by jump JP3; we have to use the first position because the
+	  second is partially out of processor instruction addressing range
+	  (though in the second position there's actually 64MB available).  */
+       SDRAM : ORIGIN = 0x00600000, LENGTH = 0x039F8000
 }
 
 SECTIONS {
@@ -138,6 +139,7 @@
 
 	/* Device contents for the root filesystem.  */
 	.root : {
+		. = ALIGN (4096) ;
 		__root_fs_image_start = . ;
 		*(.root)
 		__root_fs_image_end = . ;
v850/kernel/anna.c renamed from orig/linux-2.5.49-uc0/arch/v850/kernel/anna.c +1 -1
diff -ruN -X../cludes ../orig/linux-2.5.49-uc0/arch/v850/kernel/anna.c arch/v850/kernel/anna.c
@@ -33,7 +33,7 @@
 #define RAM_END		(SDRAM_ADDR + SDRAM_SIZE)
 
 /* The bits of this port are connected to an 8-LED bar-graph.  */
-#define LEDS_PORT	4
+#define LEDS_PORT	0
 
 
 static void anna_led_tick (void);
v850/kernel/process.c renamed from orig/linux-2.5.49-uc0/arch/v850/kernel/process.c +1 -1
diff -ruN -X../cludes ../orig/linux-2.5.49-uc0/arch/v850/kernel/process.c arch/v850/kernel/process.c
@@ -231,7 +231,7 @@
    are in entry.S).  */
 int fork_common (int flags, unsigned long new_sp, struct pt_regs *regs)
 {
-	struct task_struct *p = do_fork (flags, new_sp, regs, 0, 0);
+	struct task_struct *p = do_fork (flags, new_sp, regs, 0, 0, 0);
 	return IS_ERR (p) ? PTR_ERR (p) : p->pid;
 }
 
asm-v850/as85ep1.h renamed from orig/linux-2.5.49-uc0/include/asm-v850/as85ep1.h +7 -7
diff -ruN -X../cludes ../orig/linux-2.5.49-uc0/include/asm-v850/as85ep1.h include/asm-v850/as85ep1.h
@@ -21,19 +21,19 @@
 #define PLATFORM	"AS85EP1"
 #define PLATFORM_LONG	"NEC V850E/AS85EP1 evaluation board"
 
-#define CPU_CLOCK_FREQ	100000000 /*  100MHz */
+#define CPU_CLOCK_FREQ	96000000 /*  96MHz */
 #define SYS_CLOCK_FREQ	CPU_CLOCK_FREQ
 
 
 /* 1MB of static RAM.  */
 #define SRAM_ADDR	0x00400000
 #define SRAM_SIZE	0x00100000 /* 1MB */
-/* 64MB of DRAM.  This can actually be at one of two positions, determined
-   by jump JP3; we use the second position because the first only allows
-   access to 56MB.  */
-#define SDRAM_ADDR	0x04000000
-#define SDRAM_SIZE	0x04000000 /* 64MB */
-
+/* About 58MB of DRAM.  This can actually be at one of two positions,
+   determined by jump JP3; we have to use the first position because the
+   second is partially out of processor instruction addressing range
+   (though in the second position there's actually 64MB available).  */
+#define SDRAM_ADDR	0x00600000
+#define SDRAM_SIZE	0x039F8000 /* approx 58MB */
 
 /* For <asm/page.h> */
 #define PAGE_OFFSET 	SRAM_ADDR
asm-v850/nb85e_uart.h renamed from orig/linux-2.5.49-uc0/include/asm-v850/nb85e_uart.h +3 -1
diff -ruN -X../cludes ../orig/linux-2.5.49-uc0/include/asm-v850/nb85e_uart.h include/asm-v850/nb85e_uart.h
@@ -43,6 +43,9 @@
 #define NB85E_UART_BRGC_ADDR(n)		(NB85E_UART_BASE_ADDR(n) + 0x7)
 #endif
 
+#ifndef NB85E_UART_CKSR_MAX_FREQ
+#define NB85E_UART_CKSR_MAX_FREQ (25*1000*1000)
+#endif
 
 /* UART config registers.  */
 #define NB85E_UART_ASIM(n)	(*(volatile u8 *)NB85E_UART_ASIM_ADDR(n))
@@ -81,7 +84,6 @@
 /* UART baud-rate generator control registers.  */
 #define NB85E_UART_CKSR(n)	(*(volatile u8 *)NB85E_UART_CKSR_ADDR(n))
 #define NB85E_UART_CKSR_MAX	11
-#define NB85E_UART_CKSR_MAX_FREQ (25*1000*1000)
 #define NB85E_UART_BRGC(n)	(*(volatile u8 *)NB85E_UART_BRGC_ADDR(n))
 
 

Thanks,

-Miles

Signature · 3 lines
[|nurgle|]  ddt- demonic? so quake will have an evil kinda setting? one that 
            will  make every christian in the world foamm at the mouth? 
[iddt]      nurg, that's the goal 

A message that is not in the archive (sent off-list or not yet received): [email protected]

#3 lore raw

Hi,

Here's another v850 update for 2.5.49-uc0 (applies on top of the previous one). Mostly stuff for the new module mechanism.

Patch:

v850/kernel/Makefile renamed from orig/linux-2.5.49-uc0/arch/v850/kernel/Makefile +1 -1
diff -ruN -X../cludes ../orig/linux-2.5.49-uc0/arch/v850/kernel/Makefile arch/v850/kernel/Makefile
@@ -15,7 +15,7 @@
 	 signal.o irq.o mach.o ptrace.o bug.o
 export-objs += v850_ksyms.o rte_mb_a_pci.o
 
-obj-$(CONFIG_MODULES)		+= v850_ksyms.o
+obj-$(CONFIG_MODULES)		+= module.o v850_ksyms.o
 # chip-specific code
 obj-$(CONFIG_V850E_MA1)		+= ma.o	nb85e_utils.o nb85e_timer_d.o
 obj-$(CONFIG_V850E_NB85E)	+= nb85e_intc.o
v850/kernel/bug.c renamed from orig/linux-2.5.49-uc0/arch/v850/kernel/bug.c +73 -0

76 lines not on this page · raw message

v850/kernel/gbus_int.c renamed from orig/linux-2.5.49-uc0/arch/v850/kernel/gbus_int.c +2 -3
diff -ruN -X../cludes ../orig/linux-2.5.49-uc0/arch/v850/kernel/gbus_int.c arch/v850/kernel/gbus_int.c
@@ -14,11 +14,10 @@
 #include <linux/types.h>
 #include <linux/init.h>
 #include <linux/irq.h>
-#include <linux/sched.h>	/* For some unfathomable reason,
-				   request_irq/free_irq are declared here.  */
+#include <linux/interrupt.h>
+#include <linux/signal.h>
 
 #include <asm/machdep.h>
-#include <asm/irq.h>
 
 
 /* The number of shared GINT interrupts. */
v850/kernel/module.c renamed from orig/linux-2.5.49-uc0/arch/v850/kernel/module.c +225 -0

225 lines not on this page · raw message

v850/kernel/process.c renamed from orig/linux-2.5.49-uc0/arch/v850/kernel/process.c +0 -43

49 lines not on this page · raw message

v850/kernel/v850_ksyms.c renamed from orig/linux-2.5.49-uc0/arch/v850/kernel/v850_ksyms.c +3 -0
diff -ruN -X../cludes ../orig/linux-2.5.49-uc0/arch/v850/kernel/v850_ksyms.c arch/v850/kernel/v850_ksyms.c
@@ -27,6 +27,9 @@
 extern void dump_thread (struct pt_regs *, struct user *);
 EXPORT_SYMBOL (dump_thread);
 EXPORT_SYMBOL (kernel_thread);
+EXPORT_SYMBOL (enable_irq);
+EXPORT_SYMBOL (disable_irq);
+EXPORT_SYMBOL (disable_irq_nosync);
 EXPORT_SYMBOL (__bug);
 
 /* Networking helper routines. */
asm-v850/elf.h renamed from orig/linux-2.5.49-uc0/include/asm-v850/elf.h +2 -1
diff -ruN -X../cludes ../orig/linux-2.5.49-uc0/include/asm-v850/elf.h include/asm-v850/elf.h
@@ -19,7 +19,8 @@
 /*
  * This is used to ensure we don't load something for the wrong architecture.
  */
-#define elf_check_arch(x) ( (x)->e_machine == EM_CYGNUS_V850 )
+#define elf_check_arch(x)  \
+  ((x)->e_machine == EM_V850 || (x)->e_machine == EM_CYGNUS_V850)
 
 /*
  * These are used to set parameters in the core dumps.
asm-v850/irq.h renamed from orig/linux-2.5.49-uc0/include/asm-v850/irq.h +11 -0
diff -ruN -X../cludes ../orig/linux-2.5.49-uc0/include/asm-v850/irq.h include/asm-v850/irq.h
@@ -52,6 +52,17 @@
    interrupt.  */
 extern unsigned int handle_irq (int irq, struct pt_regs *regs);
 
+
+/* Enable interrupt handling on an irq.  */
+extern void enable_irq(unsigned int irq);
+
+/* Disable an irq and wait for completion.  */
+extern void disable_irq (unsigned int irq);
+
+/* Disable an irq without waiting. */
+extern void disable_irq_nosync (unsigned int irq);
+
+
 #endif /* !__ASSEMBLY__ */
 
 #endif /* __V850_IRQ_H__ */
asm-v850/module.h renamed from orig/linux-2.5.49-uc0/include/asm-v850/module.h +24 -4
diff -ruN -X../cludes ../orig/linux-2.5.49-uc0/include/asm-v850/module.h include/asm-v850/module.h
@@ -3,20 +3,40 @@
  *
  *  Copyright (C) 2001,02  NEC Corporation
  *  Copyright (C) 2001,02  Miles Bader <[email protected]>
+ *  Copyright (C) 2001  Rusty Russell
  *
  * This file is subject to the terms and conditions of the GNU General
  * Public License.  See the file COPYING in the main directory of this
  * archive for more details.
  *
  * Written by Miles Bader <[email protected]>
+ *
+ * Derived in part from include/asm-ppc/module.h
  */
 
 #ifndef __V850_MODULE_H__
 #define __V850_MODULE_H__
 
-#define arch_init_modules(x)	((void)0)
-#define module_arch_init(x)	(0)
-#define module_map(sz)		vmalloc (sz)
-#define module_unmap(sz)	vfree (sz)
+#define MODULE_SYMBOL_PREFIX "_"
+
+struct v850_plt_entry
+{
+	/* Indirect jump instruction sequence (6-byte mov + 2-byte jr).  */
+	unsigned long tramp[2];
+};
+
+struct mod_arch_specific
+{
+	/* How much of the core is actually taken up with core (then
+           we know the rest is for the PLT).  */
+	unsigned int core_plt_offset;
+
+	/* Same for init.  */
+	unsigned int init_plt_offset;
+};
+
+#define Elf_Shdr Elf32_Shdr
+#define Elf_Sym Elf32_Sym
+#define Elf_Ehdr Elf32_Ehdr
 
 #endif /* __V850_MODULE_H__ */

Thanks,

-Miles

Signature · 1 line
"1971 pickup truck; will trade for guns"