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:
parent
31cf15b180
commit
f58bc5991f
@ -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>
|
2014-12-12 Stefan Wallentowitz <stefan.wallentowitz@tum.de>
|
||||||
|
|
||||||
* libc/machine/or1k/setjmp.S: Remove save/restore of r3-r8
|
* libc/machine/or1k/setjmp.S: Remove save/restore of r3-r8
|
||||||
|
@ -245,7 +245,7 @@ case "${host_cpu}" in
|
|||||||
nios2*)
|
nios2*)
|
||||||
machine_dir=nios2
|
machine_dir=nios2
|
||||||
;;
|
;;
|
||||||
or1k*)
|
or1k*|or1knd*)
|
||||||
machine_dir=or1k
|
machine_dir=or1k
|
||||||
;;
|
;;
|
||||||
powerpc*)
|
powerpc*)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
_BEGIN_STD_C
|
_BEGIN_STD_C
|
||||||
|
|
||||||
#ifdef __or1k__
|
#if defined(__or1k__) || defined(__or1knd__)
|
||||||
#define _JBLEN 31 /* 32 GPRs - r0 */
|
#define _JBLEN 31 /* 32 GPRs - r0 */
|
||||||
#define _JBTYPE unsigned long
|
#define _JBTYPE unsigned long
|
||||||
#endif
|
#endif
|
||||||
|
@ -49,8 +49,18 @@ setjmp:
|
|||||||
l.mfspr r13, r0, 17
|
l.mfspr r13, r0, 17
|
||||||
l.sw 124(r3), r13
|
l.sw 124(r3), r13
|
||||||
/* Set result register to 0 and jump */
|
/* 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.jr r9
|
||||||
l.addi r11, r0, 0
|
l.addi r11, r0, 0
|
||||||
|
#else
|
||||||
|
l.addi r11, r0, 0
|
||||||
|
l.jr r9
|
||||||
|
l.nop
|
||||||
|
#endif
|
||||||
|
|
||||||
.align 4
|
.align 4
|
||||||
.global longjmp
|
.global longjmp
|
||||||
@ -83,7 +93,16 @@ longjmp:
|
|||||||
l.lwz r24, 92(r3)
|
l.lwz r24, 92(r3)
|
||||||
l.lwz r26, 100(r3)
|
l.lwz r26, 100(r3)
|
||||||
l.lwz r28, 108(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.jr r9
|
||||||
l.nop
|
l.nop
|
||||||
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user