--- Log opened Wed Sep 27 00:00:03 2017 | ||
-!- Netsplit *.net <-> *.split quits: X-Scale, shorne | 00:29 | |
-!- [X-Scale] is now known as X-Scale | 00:30 | |
-!- Netsplit over, joins: shorne | 00:30 | |
mithro | Any idea why this EXCEPTION_STACK_SIZE needs to be 256? This change https://github.com/mithro/litex/commit/0797314ca1ae575197dcbef0a2c6d81293f3d4cb fixes random lock ups we were having when using or1k on our real boards and we don't understand why. Everyone seems to use 128+128 without any explanation. The same code works fine when running in QEMU. | 02:49 |
---|---|---|
mithro | stekern / shorne -^ | 02:50 |
mithro | juliusb said you might know | 02:51 |
stekern | mithro: that's the red zone | 03:17 |
mithro | What is the redzone and how do I find out about it? | 03:18 |
mithro | And why doesn't the code fail in QEMU? | 03:19 |
stekern | but... the red zone should be 128 bytes afair | 03:22 |
stekern | https://en.wikipedia.org/wiki/Red_zone_(computing) | 03:22 |
stekern | ah, but you are using the other 128 bytes for your exception stack | 03:24 |
mithro | stekern: any idea why it doesn't break in qemu? | 04:52 |
mithro | stekern: also, why would this make sense on an arch like openrisc which has a register based stack pointer and heaps of registers? | 05:07 |
mithro | Also, the link which Wikipedia provides to opencores seems broken :-/ | 05:08 |
mithro | http://www.embecosm.com/appnotes/ean3/html/ch04s02s05.html | 05:11 |
mithro | The OpenRISC 1000 reserves the 2,560 bytes below the stack pointer for use by exception handlers and frameless functions. This is known as a red zone(an AMD term). | 05:11 |
mithro | Hrm | 05:14 |
mithro | * The "red zone" is reduced to 128 bytes, but is now actually used (previously it was defined to be 2K, but not used. It is thus essential that interrupt handlers do not use the first 128 bytes of stack. An option -mredzone=''size'' is available to change this, including setting the red zone to zero (which will reduce performance). | 05:14 |
stekern | mithro: I don't know why it doesn't break on qemu | 05:24 |
stekern | maybe your breakage is timing sensitive and the timing is different on qemu | 05:25 |
mithro | It definetly only happens randomly | 05:27 |
mithro | IE it must only happen when the redzone is used and an interrupt occurs | 05:28 |
stekern | yes | 05:29 |
mithro | Maybe qemu only delivers interrupts when certain boundaries occur meaning the redzone is never in use at that time... | 05:30 |
stekern | that actually sounds as a pretty plausible explanation | 05:31 |
mafm[m] | shorne: | 09:06 |
mafm[m] | Are you the author of jor1k? | 09:07 |
mafm[m] | Does it work with the latest privilege spec? | 09:08 |
shorne | mafm[m]: I am not the author, its sebasitian macke | 10:01 |
shorne | mithro: I am not sure why that change fixes your issue, what is libbase used for? | 10:02 |
Finde | any update on when the orconf videos will show up? | 11:39 |
mafm[m] | shorne: ok, thanks | 12:45 |
shorne | mafm[m]: what about the latest privilage spec though? I dont know of any recent changes there. | 19:20 |
--- Log closed Thu Sep 28 00:00:05 2017 |
Generated by irclog2html.py 2.15.2 by Marius Gedminas - find it at mg.pov.lt!