?? uclinux-20040408-armsys.patch
字號:
diff -urN uClinux-dist/linux-2.4.x/arch/armnommu/boot/compressed/head.S linux-2.4.x/arch/armnommu/boot/compressed/head.S--- uClinux-dist/linux-2.4.x/arch/armnommu/boot/compressed/head.S 2004-02-17 20:52:18.000000000 +0800+++ linux-2.4.x/arch/armnommu/boot/compressed/head.S 2004-05-18 09:52:01.000000000 +0800@@ -10,7 +10,7 @@ #include <linux/config.h> #include <linux/linkage.h> -#ifdef CONFIG_BOARD_SNDS100+#if defined(CONFIG_BOARD_SNDS100) || defined(CONFIG_BOARD_MBA44) #include <asm/hardware.h> #endif @@ -154,7 +154,7 @@ str r1, [r0] ldr r0, =IOPDATA- ldr r1, =0xEF+ ldr r1, =0xaa @0xEF str r1, [r0] /* copy image to ram */@@ -187,7 +187,7 @@ blt 1b #ifdef CONFIG_CPU_WITH_CACHE-#ifndef CONFIG_BOARD_SNDS100+#if !defined(CONFIG_BOARD_SNDS100) && !defined(CONFIG_BOARD_MBA44) mrc p15, 0, r6, c0, c0 @ get processor ID bl cache_on #endif@@ -199,17 +199,24 @@ orr r2, r2, #6 str r2, [r0] #endif++#ifdef CONFIG_BOARD_MBA44+ ldr r0, =S3C44B0X_SYSCFG+ ldr r2, [r0]+ orr r2, r2, #0xe+ str r2, [r0]+#endif #endif mov r1, sp @ malloc space above stack add r2, sp, #0x10000 @ 64k max -#ifndef CONFIG_BOARD_SNDS100+#if !defined(CONFIG_BOARD_SNDS100) && !defined(CONFIG_BOARD_MBA44) teq r4, r5 @ will we overwrite ourselves? moveq r5, r2 @ decompress after image movne r5, r4 @ decompress to final location #endif-#ifdef CONFIG_BOARD_SNDS100+#if defined(CONFIG_BOARD_SNDS100) || defined(CONFIG_BOARD_MBA44) mov r5, r2 @ decompress after image #endif mov r0, r5@@ -429,7 +436,14 @@ str r1, [r0] mov pc, lr #endif-#ifndef CONFIG_BOARD_SNDS100+#ifdef CONFIG_BOARD_MBA44+ ldr r0, =S3C44B0X_SYSCFG+ ldr r1, [r0]+ bic r1, r1, #0xe+ str r1, [r0]+ mov pc, lr+#endif+#if !defined(CONFIG_BOARD_SNDS100) && !defined(CONFIG_BOARD_MBA44) #ifdef CONFIG_CPU_ARM610 eor r1, r6, #0x41000000 eor r1, r1, #0x00560000@@ -485,7 +499,10 @@ bne cache_flush_loop mov pc, lr #endif-#ifndef CONFIG_BOARD_SNDS100+#ifdef CONFIG_BOARD_MBA44+ mov pc, lr+#endif+#if !defined(CONFIG_BOARD_SNDS100) && !defined(CONFIG_BOARD_MBA44) ldr r1, proc_sa110_type eor r1, r1, r6 movs r1, r1, lsr #5 @ catch SA110 and SA1100diff -urN uClinux-dist/linux-2.4.x/arch/armnommu/boot/Makefile linux-2.4.x/arch/armnommu/boot/Makefile--- uClinux-dist/linux-2.4.x/arch/armnommu/boot/Makefile 2004-02-17 20:52:18.000000000 +0800+++ linux-2.4.x/arch/armnommu/boot/Makefile 2004-03-24 22:45:28.000000000 +0800@@ -117,6 +117,11 @@ endif endif +ifeq ($(CONFIG_BOARD_MBA44),y)+ZTEXTADDR = 0x0c000000+ZRELADDR = 0x0c008000+endif+ # # If you don't define ZRELADDR above, # then it defaults to ZTEXTADDRdiff -urN uClinux-dist/linux-2.4.x/arch/armnommu/config.in linux-2.4.x/arch/armnommu/config.in--- uClinux-dist/linux-2.4.x/arch/armnommu/config.in 2004-02-17 20:52:18.000000000 +0800+++ linux-2.4.x/arch/armnommu/config.in 2004-05-18 09:51:04.000000000 +0800@@ -349,13 +349,13 @@ define_bool CONFIG_NO_PGT_CACHE y define_bool CONFIG_CPU_WITH_CACHE y define_bool CONFIG_CPU_WITH_MCR_INSTRUCTION n- define_int CONFIG_ARM_CLK 60000000- define_bool CONFIG_SERIAL_S3C44B0X y- define_int CONFIG_FORCE_MAX_ZONEORDER 5+ define_int CONFIG_ARM_CLK 64000000 #72000000 #60000000+# define_bool CONFIG_SERIAL_S3C44B0X y+# define_int CONFIG_FORCE_MAX_ZONEORDER 5 if [ "$CONFIG_SET_MEM_PARAM" = "n" ]; then- define_hex DRAM_BASE 0x00000000+ define_hex DRAM_BASE 0x0C000000 define_hex DRAM_SIZE 0x00800000- define_hex FLASH_MEM_BASE 0x01000000+ define_hex FLASH_MEM_BASE 0x00000000 define_hex FLASH_SIZE 0x00200000 fi fi@@ -391,7 +391,7 @@ define_bool CONFIG_CPU_WITH_MCR_INSTRUCTION n if [ "$CONFIG_SET_MEM_PARAM" = "n" ]; then define_hex DRAM_BASE 0x00000000- define_hex DRAM_SIZE 0x00800000+ define_hex DRAM_SIZE 0x01000000 define_hex FLASH_MEM_BASE 0x01000000 define_hex FLASH_SIZE 0x00200000 fi@@ -561,12 +561,16 @@ "$CONFIG_ARCH_EBSA110" = "y" -o \ "$CONFIG_ARCH_EBSA285" = "y" -o \ "$CONFIG_ARCH_CO285" = "y" -o \+ "$CONFIG_BOARD_SNDS100" = "y" -o \+ "$CONFIG_CPU_S3C44B0X" = "y" -o \ "$CONFIG_ARCH_SA1100" = "y" ]; then bool 'Timer and CPU usage LEDs' CONFIG_LEDS if [ "$CONFIG_LEDS" = "y" ]; then if [ "$CONFIG_ARCH_NETWINDER" = "y" -o \ "$CONFIG_ARCH_EBSA285" = "y" -o \ "$CONFIG_ARCH_CO285" = "y" -o \+ "$CONFIG_BOARD_SNDS100" = "y" -o \+ "$CONFIG_CPU_S3C44B0X" = "y" -o \ "$CONFIG_ARCH_SA1100" = "y" ]; then bool ' Timer LED' CONFIG_LEDS_TIMER bool ' CPU usage LED' CONFIG_LEDS_CPUdiff -urN uClinux-dist/linux-2.4.x/arch/armnommu/kernel/head-armv.S linux-2.4.x/arch/armnommu/kernel/head-armv.S--- uClinux-dist/linux-2.4.x/arch/armnommu/kernel/head-armv.S 2004-02-17 20:52:18.000000000 +0800+++ linux-2.4.x/arch/armnommu/kernel/head-armv.S 2004-05-18 11:39:29.000000000 +0800@@ -21,6 +21,10 @@ #include <asm/mach-types.h> #include <asm/mach/arch.h> +#ifdef CONFIG_BOARD_MBA44+#include <asm/arch/hardware.h>+#endif+ #define K(a,b,c) ((a) << 24 | (b) << 12 | (c)) /*@@ -72,6 +76,7 @@ .section ".text.init",#alloc,#execinstr .type stext, #function ENTRY(stext)+#if defined(CONFIG_ROMKERNEL) #if defined(CONFIG_CPU_S3C44B0X) /* * We assume that there is a bootloader that has jump instructions at all@@ -89,6 +94,7 @@ b vector_FIQ /* 0x1C FIQ */ 99: #endif+#endif mov r12, r0 /* * NOTE! Any code which is placed here should be done for one of@@ -241,6 +247,12 @@ str r2, [r6] mov r2, #MACH_TYPE_SNDS100 str r2, [r9]+ + /* cache/write buffer on */+ ldr r0, S3C4510_SYSCFG @=SYSCFG+ ldr r2, [r0]+ orr r2, r2, #6+ str r2, [r0] mov fp, #0 b start_kernel@@ -253,6 +265,8 @@ S3C4510B_PROCESSOR_TYPE: .long 0x36365036+S3C4510_SYSCFG:+ .long 0x03ff0000 #endif #if defined(CONFIG_ARCH_TA7S) || defined(CONFIG_ARCH_TA7V)@@ -389,6 +403,11 @@ str r3, [r6] #endif #if defined(CONFIG_CPU_S3C44B0X)+ ldr r9, =S3C44B0X_SYSCFG+ ldr r3, [r9]+ orr r3, r3, #0xe+ str r3, [r9] @enable cache and write buffer+ ldr r3, S3C44B0X_PROCESSOR_TYPE str r3, [r5] diff -urN uClinux-dist/linux-2.4.x/arch/armnommu/kernel/setup.c linux-2.4.x/arch/armnommu/kernel/setup.c--- uClinux-dist/linux-2.4.x/arch/armnommu/kernel/setup.c 2004-02-17 20:52:18.000000000 +0800+++ linux-2.4.x/arch/armnommu/kernel/setup.c 2004-03-24 23:31:59.000000000 +0800@@ -38,7 +38,7 @@ #endif #ifndef CONFIG_CMDLINE-#define CONFIG_CMDLINE "root=/dev/rom0"+#define CONFIG_CMDLINE "root=/dev/rom0 init=/linuxrc" #endif #ifdef CONFIG_ARCH_NETARMdiff -urN uClinux-dist/linux-2.4.x/arch/armnommu/mach-S3C44B0X/arch.c linux-2.4.x/arch/armnommu/mach-S3C44B0X/arch.c--- uClinux-dist/linux-2.4.x/arch/armnommu/mach-S3C44B0X/arch.c 2004-02-17 20:52:21.000000000 +0800+++ linux-2.4.x/arch/armnommu/mach-S3C44B0X/arch.c 2004-03-23 23:44:41.000000000 +0800@@ -31,3 +31,4 @@ /* * @todo activate the hardware reset */+}diff -urN uClinux-dist/linux-2.4.x/arch/armnommu/mach-S3C44B0X/fs44b0-leds.c linux-2.4.x/arch/armnommu/mach-S3C44B0X/fs44b0-leds.c--- uClinux-dist/linux-2.4.x/arch/armnommu/mach-S3C44B0X/fs44b0-leds.c 1970-01-01 08:00:00.000000000 +0800+++ linux-2.4.x/arch/armnommu/mach-S3C44B0X/fs44b0-leds.c 2004-05-18 09:57:36.000000000 +0800@@ -0,0 +1,112 @@+/*+ * LED driver for the Atmel AT91RM9200 Development Kit.+ *+ * (c) SAN People (Pty) Ltd+ *+ * This program is free software; you can redistribute it and/or+ * modify it under the terms of the GNU General Public License+ * as published by the Free Software Foundation; either version+ * 2 of the License, or (at your option) any later version.+*/++//added by antiscle++#include <linux/config.h>+#include <linux/kernel.h>+#include <linux/module.h>+#include <linux/init.h>++#include <asm/mach-types.h>+#include <asm/leds.h>+#include <asm/io.h>+#include <asm/system.h>+#include <asm/arch/hardware.h>+++static inline void leds_off(void)+{+ outl(inl(S3C44B0X_PDATE)&~(3<<2), S3C44B0X_PDATE);+}++static inline void leds_on(void)+{+ outl(inl(S3C44B0X_PDATE)|(3<<2), S3C44B0X_PDATE);+}++static inline void timer_led_toggle(void)+{+ outl(inl(S3C44B0X_PDATE)^(1<<2), S3C44B0X_PDATE);+}++static inline void busy_led_off(void)+{+ outl(inl(S3C44B0X_PDATE)&~(1<<3), S3C44B0X_PDATE);+}++static inline void busy_led_on(void)+{+ outl(inl(S3C44B0X_PDATE)|(1<<3), S3C44B0X_PDATE);+}++/*+ * Handle LED events.+ */+static void fs44b0_leds_event(led_event_t evt)+{+ unsigned long flags;+ + local_irq_save(flags);++ switch(evt) {+ case led_start: /* System startup */+ leds_on();+ break;++ case led_stop: /* System stop / suspend */+ leds_off();+ break;++#ifdef CONFIG_LEDS_TIMER+ case led_timer: /* Every 50 timer ticks */+ timer_led_toggle();+ break;+#endif++#ifdef CONFIG_LEDS_CPU+ case led_idle_start: /* Entering idle state */+ busy_led_off();+ break;++ case led_idle_end: /* Exit idle state */+ busy_led_on();+ break;+#endif++ default:+ break;+ }++ local_irq_restore(flags);+}+++static int __init leds_init(void)+{+ /* Enable PIO to access the LEDs+ *outl((inl(S3C44B0X_PCONE)&~(0xf0))|0x50, S3C44B0X_PCONE);+ */+ outl(0x15569, S3C44B0X_PCONE);+ +#ifdef CONFIG_LEDS_TIMER+// printk("LEDS_TIMER init\n");+#endif+#ifdef CONFIG_LEDS_CPU+// printk("LEDS_CPU init\n");+#endif+ //leds_event = fs44b0_leds_event;//temp for make++ //leds_event(led_start);//temp for make+ return 0;+}++__initcall(leds_init);diff -urN uClinux-dist/linux-2.4.x/arch/armnommu/mach-S3C44B0X/Makefile linux-2.4.x/arch/armnommu/mach-S3C44B0X/Makefile--- uClinux-dist/linux-2.4.x/arch/armnommu/mach-S3C44B0X/Makefile 2004-02-17 20:52:21.000000000 +0800+++ linux-2.4.x/arch/armnommu/mach-S3C44B0X/Makefile 2004-05-17 11:24:40.000000000 +0800@@ -20,4 +20,8 @@ export-objs := +# LEDs support+leds-$(CONFIG_CPU_S3C44B0X) += fs44b0-leds.o+obj-$(CONFIG_LEDS) += $(leds-y)+ include $(TOPDIR)/Rules.makediff -urN uClinux-dist/linux-2.4.x/arch/armnommu/mach-S3C44B0X/time.c linux-2.4.x/arch/armnommu/mach-S3C44B0X/time.c--- uClinux-dist/linux-2.4.x/arch/armnommu/mach-S3C44B0X/time.c 2004-02-17 20:52:21.000000000 +0800+++ linux-2.4.x/arch/armnommu/mach-S3C44B0X/time.c 2004-05-17 11:25:04.000000000 +0800@@ -23,9 +23,9 @@ { return (inw(S3C44B0X_TCNTB5) / CLOCKS_PER_USEC); }-+/* void s3c44b0x_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) { do_timer(regs);-}+}*/ diff -urN uClinux-dist/linux-2.4.x/arch/armnommu/mach-snds100/fs4510-leds.c linux-2.4.x/arch/armnommu/mach-snds100/fs4510-leds.c--- uClinux-dist/linux-2.4.x/arch/armnommu/mach-snds100/fs4510-leds.c 1970-01-01 08:00:00.000000000 +0800+++ linux-2.4.x/arch/armnommu/mach-snds100/fs4510-leds.c 2004-05-18 09:57:14.000000000 +0800@@ -0,0 +1,109 @@+/*+ * LED driver for the Atmel AT91RM9200 Development Kit.+ *+ * (c) SAN People (Pty) Ltd+ *+ * This program is free software; you can redistribute it and/or+ * modify it under the terms of the GNU General Public License+ * as published by the Free Software Foundation; either version+ * 2 of the License, or (at your option) any later version.+*/++//added by antiscle++#include <linux/config.h>+#include <linux/kernel.h>+#include <linux/module.h>+#include <linux/init.h>++#include <asm/mach-types.h>+#include <asm/leds.h>+#include <asm/io.h>+#include <asm/system.h>+#include <asm/arch/hardware.h>+++static inline void leds_off(void)+{+ outl(inl(IOPDATA)|0x3, IOPDATA);+}++static inline void leds_on(void)+{+ outl(inl(IOPDATA)&~0x3, IOPDATA);+}++static inline void timer_led_toggle(void)+{+ outl(inl(IOPDATA)^0x1, IOPDATA);+}++static inline void busy_led_off(void)+{+ outl(inl(IOPDATA)|0x2, IOPDATA);+}++static inline void busy_led_on(void)+{+ outl(inl(IOPDATA)&~0x2, IOPDATA);+}++/*+ * Handle LED events.+ */+static void fs44b0_leds_event(led_event_t evt)+{+ unsigned long flags;+ + local_irq_save(flags);++ switch(evt) {+ case led_start: /* System startup */+ leds_on();+ break;++ case led_stop: /* System stop / suspend */+ leds_off();+ break;++#ifdef CONFIG_LEDS_TIMER+ case led_timer: /* Every 50 timer ticks */+ timer_led_toggle();+ break;+#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -