2014-12-12 Stefan Wallentowitz <stefan.wallentowitz@tum.de>

* configure.host: or1knd support, OpenRISC without delay slot
        * libc/include/machine/setjmp.h: Add or1knd
        * libc/machine/or1k/setjmp.S: Optional delay slot
This commit is contained in:
Jeff Johnston 2014-12-12 21:14:06 +00:00
parent 31cf15b180
commit f58bc5991f
4 changed files with 28 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2014-12-12 Stefan Wallentowitz <stefan.wallentowitz@tum.de>
* configure.host: or1knd support, OpenRISC without delay slot
* libc/include/machine/setjmp.h: Add or1knd
* libc/machine/or1k/setjmp.S: Optional delay slot
2014-12-12 Stefan Wallentowitz <stefan.wallentowitz@tum.de>
* libc/machine/or1k/setjmp.S: Remove save/restore of r3-r8

View File

@ -245,7 +245,7 @@ case "${host_cpu}" in
nios2*)
machine_dir=nios2
;;
or1k*)
or1k*|or1knd*)
machine_dir=or1k
;;
powerpc*)

View File

@ -1,7 +1,7 @@
_BEGIN_STD_C
#ifdef __or1k__
#if defined(__or1k__) || defined(__or1knd__)
#define _JBLEN 31 /* 32 GPRs - r0 */
#define _JBTYPE unsigned long
#endif

View File

@ -49,8 +49,18 @@ setjmp:
l.mfspr r13, r0, 17
l.sw 124(r3), r13
/* Set result register to 0 and jump */
// Different cases for optional delay slot
#if defined(__OR1K_NODELAY__)
l.addi r11, r0, 0
l.jr r9
#elif defined(__OR1K_DELAY__)
l.jr r9
l.addi r11, r0, 0
#else
l.addi r11, r0, 0
l.jr r9
l.nop
#endif
.align 4
.global longjmp
@ -83,7 +93,16 @@ longjmp:
l.lwz r24, 92(r3)
l.lwz r26, 100(r3)
l.lwz r28, 108(r3)
l.lwz r30, 116(r3)
// Different cases for optional delay slot
#if defined(__OR1K_NODELAY__)
l.lwz r30, 116(r3)
l.jr r9
#elif defined(__OR1K_DELAY__)
l.jr r9
l.lwz r30, 116(r3)
#else
l.lwz r30, 116(r3)
l.jr r9
l.nop
#endif