Commit 37741f65 authored by Yoshinori Sato's avatar Yoshinori Sato Committed by Linus Torvalds

[PATCH] H8/300 support update

 - fix semaphore problem
 - document update and config fix
parent a2ec0df5
...@@ -341,8 +341,8 @@ config UNIX98_PTY_COUNT ...@@ -341,8 +341,8 @@ config UNIX98_PTY_COUNT
endmenu endmenu
#source drivers/misc/Config.in
source "drivers/media/Kconfig" source "drivers/media/Kconfig"
source "sound/Kconfig"
source "fs/Kconfig" source "fs/Kconfig"
......
uClinux-2.4 for H8/300 README linux-2.6 for H8/300 README
Yoshinori Sato <ysato@users.sourceforge.jp> Yoshinori Sato <ysato@users.sourceforge.jp>
* Supported CPU * Supported CPU
H8/300H H8/300H and H8S
H8S is planning.
* Supported Target * Supported Target
1.simulator of GDB 1.simulator of GDB
...@@ -15,8 +14,11 @@ H8S is planning. ...@@ -15,8 +14,11 @@ H8S is planning.
Akizuki Denshi Tsusho Ltd. <http://www.akizuki.ne.jp> (Japanese Only) Akizuki Denshi Tsusho Ltd. <http://www.akizuki.ne.jp> (Japanese Only)
3.H8MAX 3.H8MAX
Under development see http://ip-sol.jp/h8max/ (Japanese Only)
see http://www.strawberry-linux.com (Japanese Only)
4.EDOSK2674
see http://www.eu.renesas.com/products/mpumcu/tool/edk/support/edosk2674.html
http://www.azpower.com/H8-uClinux/
* Toolchain Version * Toolchain Version
gcc-3.1 or higher and patch gcc-3.1 or higher and patch
...@@ -26,10 +28,10 @@ gdb-5.2 or higher ...@@ -26,10 +28,10 @@ gdb-5.2 or higher
The environment that can compile a h8300-elf binary is necessary. The environment that can compile a h8300-elf binary is necessary.
* Userland Develop environment * Userland Develop environment
Tempolary used h8300-hms(h8300-coff) Toolchain. used h8300-elf toolchains.
I prepare toolchain corresponding to h8300-elf. see http://www.uclinux.org/pub/uClinux/ports/h8/
* A few words of thanks * A few words of thanks
Porting to H8/300H is support of Information-technology Promotion Agency, Japan. Porting to H8/300 serieses is support of Information-technology Promotion Agency, Japan.
I thank support. I thank support.
and All developer/user. and All developer/user.
/* romfs move to __ebss */ /* romfs move to __ebss */
#include <asm/linkage.h> #include <asm/linkage.h>
#include <linux/config.h>
#if defined(__H8300H__) #if defined(__H8300H__)
.h8300h .h8300h
...@@ -9,6 +10,8 @@ ...@@ -9,6 +10,8 @@
.h8300s .h8300s
#endif #endif
#define BLKOFFSET 512
.text .text
.globl __move_romfs .globl __move_romfs
_romfs_sig_len = 8 _romfs_sig_len = 8
...@@ -31,6 +34,9 @@ __move_romfs: ...@@ -31,6 +34,9 @@ __move_romfs:
add.l er0,er1 /* romfs image end */ add.l er0,er1 /* romfs image end */
mov.l #__ebss,er2 mov.l #__ebss,er2
add.l er0,er2 /* distination address */ add.l er0,er2 /* distination address */
#if defined(CONFIG_INTELFLASH)
add.l #BLKOFFSET,er2
#endif
adds #2,er0 adds #2,er0
adds #1,er0 adds #1,er0
shlr er0 shlr er0
......
/* /*
* linux/arch/h8300/platform/h8sh/ints.c * linux/arch/h8300/platform/h8s/ints.c
* *
* Yoshinori Sato <ysato@users.sourceforge.jp> * Yoshinori Sato <ysato@users.sourceforge.jp>
* *
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include <linux/kernel_stat.h> #include <linux/kernel_stat.h>
#include <linux/seq_file.h> #include <linux/seq_file.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/slab.h>
#include <linux/bootmem.h> #include <linux/bootmem.h>
#include <linux/random.h> #include <linux/random.h>
...@@ -75,7 +74,7 @@ const static struct irq_pins irq_assign_table1[16]={ ...@@ -75,7 +74,7 @@ const static struct irq_pins irq_assign_table1[16]={
{H8300_GPIO_P2,H8300_GPIO_B6},{H8300_GPIO_P2,H8300_GPIO_B7}, {H8300_GPIO_P2,H8300_GPIO_B6},{H8300_GPIO_P2,H8300_GPIO_B7},
}; };
static int use_kmalloc; static short use_kmalloc = 0;
extern unsigned long *interrupt_redirect_table; extern unsigned long *interrupt_redirect_table;
......
...@@ -101,13 +101,14 @@ static inline void down(struct semaphore * sem) ...@@ -101,13 +101,14 @@ static inline void down(struct semaphore * sem)
"mov.l er1,%0\n\t" "mov.l er1,%0\n\t"
"bpl 1f\n\t" "bpl 1f\n\t"
"ldc r3l,ccr\n\t" "ldc r3l,ccr\n\t"
"mov.l %1,er0\n\t"
"jsr @___down\n\t" "jsr @___down\n\t"
"bra 2f\n" "bra 2f\n"
"1:\n\t" "1:\n\t"
"ldc r3l,ccr\n" "ldc r3l,ccr\n"
"2:" "2:"
: "+m"(*count) : "+m"(*count)
: : "g"(sem)
: "cc", "er1", "er2", "er3"); : "cc", "er1", "er2", "er3");
} }
...@@ -129,6 +130,7 @@ static inline int down_interruptible(struct semaphore * sem) ...@@ -129,6 +130,7 @@ static inline int down_interruptible(struct semaphore * sem)
"mov.l er2,%1\n\t" "mov.l er2,%1\n\t"
"bpl 1f\n\t" "bpl 1f\n\t"
"ldc r1l,ccr\n\t" "ldc r1l,ccr\n\t"
"mov.l %2,er0\n\t"
"jsr @___down_interruptible\n\t" "jsr @___down_interruptible\n\t"
"bra 2f\n" "bra 2f\n"
"1:\n\t" "1:\n\t"
...@@ -136,7 +138,7 @@ static inline int down_interruptible(struct semaphore * sem) ...@@ -136,7 +138,7 @@ static inline int down_interruptible(struct semaphore * sem)
"sub.l %0,%0\n\t" "sub.l %0,%0\n\t"
"2:\n\t" "2:\n\t"
: "=r" (count),"+m" (*count) : "=r" (count),"+m" (*count)
: : "g"(sem)
: "cc", "er1", "er2", "er3"); : "cc", "er1", "er2", "er3");
return (int)count; return (int)count;
} }
...@@ -161,6 +163,7 @@ static inline int down_trylock(struct semaphore * sem) ...@@ -161,6 +163,7 @@ static inline int down_trylock(struct semaphore * sem)
"jmp @3f\n\t" "jmp @3f\n\t"
LOCK_SECTION_START(".align 2\n\t") LOCK_SECTION_START(".align 2\n\t")
"3:\n\t" "3:\n\t"
"mov.l %2,er0\n\t"
"jsr @___down_trylock\n\t" "jsr @___down_trylock\n\t"
"jmp @2f\n\t" "jmp @2f\n\t"
LOCK_SECTION_END LOCK_SECTION_END
...@@ -169,7 +172,7 @@ static inline int down_trylock(struct semaphore * sem) ...@@ -169,7 +172,7 @@ static inline int down_trylock(struct semaphore * sem)
"sub.l %1,%1\n" "sub.l %1,%1\n"
"2:" "2:"
: "+m" (*count),"=r"(count) : "+m" (*count),"=r"(count)
: : "g"(sem)
: "cc", "er1","er2", "er3"); : "cc", "er1","er2", "er3");
return (int)count; return (int)count;
} }
...@@ -199,10 +202,11 @@ static inline void up(struct semaphore * sem) ...@@ -199,10 +202,11 @@ static inline void up(struct semaphore * sem)
"sub.l er2,er2\n\t" "sub.l er2,er2\n\t"
"cmp.l er2,er1\n\t" "cmp.l er2,er1\n\t"
"bgt 1f\n\t" "bgt 1f\n\t"
"mov.l %1,er0\n\t"
"jsr @___up\n" "jsr @___up\n"
"1:" "1:"
: "+m"(*count) : "+m"(*count)
: : "g"(sem)
: "cc", "er1", "er2", "er3"); : "cc", "er1", "er2", "er3");
} }
......
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