--- Log opened Tue Feb 03 00:00:24 2015 | ||
mor1kx | [mor1kx] skristiansson closed pull request #23: Move localparam definition out from generate loops (master...master) https://github.com/openrisc/mor1kx/pull/23 | 01:35 |
---|---|---|
olofk | Can I do instruction and GPR tracing with or1ksim? | 08:17 |
olofk | aha | 08:17 |
olofk | -t | 08:17 |
olofk | Stupid virtual memory. | 08:23 |
olofk | Why not just equip all boards with enough RAM to let each process have 4GB of real memory. I bet that could save a few headaches | 08:25 |
olofk | According to ps, 137x4GB memory would be enough for me atm | 08:25 |
stekern | olofk: you can dynamically turn on and off tracing with l.nop 0x8 and l.nop 0x9 too | 08:33 |
olofk | stekern: Ah. cool | 08:33 |
olofk | I just written a fancy memset routine. It works stand-alone, but the kernel doesn't seem to like it quite as much | 08:34 |
dalias | fancy memset? | 08:35 |
olofk | http://pastie.org/9882984 | 08:36 |
olofk | Yes, it's very fancy. You can set the memory to any colour that you like | 08:36 |
olofk | And it writes 32-bit words instead of chars for buffers > 7 bytes | 08:37 |
dalias | does it outperform the C one from musl? :) | 08:37 |
olofk | dalias: Oh... haven't checked. Should do that | 08:37 |
olofk | Does the one in musl work? | 08:37 |
dalias | yes | 08:38 |
olofk | Ok, that's one point where it's better than mine | 08:38 |
dalias | :-p | 08:38 |
dalias | well it's just C (including some optional "GNUC" with may_alias) | 08:39 |
olofk | Got a link for the lazy? | 08:39 |
dalias | the main trick is minimizing the number of branches at the expense of possibly doing some redundant writes | 08:39 |
dalias | http://git.musl-libc.org/cgit/musl/tree/src/string/memset.c | 08:39 |
olofk | Yeah, I got at least one unnecessay branch that I could remove at the expense of always executing one or two extra instructions | 08:40 |
olofk | thanks | 08:40 |
olofk | But I've filled all but one delay slots, so I'm regaining a bit lost performance there | 08:41 |
olofk | stekern: Which is on, and which is off? Can't find the docs | 08:56 |
stekern | i'm pretty sure 0x8 is on | 08:57 |
olofk | Are there any special rules I need to follow when writing asm for the kernel? I'm a bit worried about my label names. Couldn't they conflict with something? | 09:00 |
_franck__ | dalias: olofk : what I started to do some times ago is to optimize the assembly version of memcpy from musl | 09:02 |
_franck__ | ....then I stopped and did something else | 09:03 |
olofk | _franck__: You do memcpy and I do memset then :) | 09:03 |
olofk | And we can both get our names in the kernel :) | 09:03 |
olofk | ...and get laid | 09:03 |
_franck__ | :) | 09:03 |
olofk | Looks like it works now! | 09:31 |
olofk | At least I can boot Linux.. | 09:31 |
olofk | dalias: Any easy way to plug my assembler memset into musl and do performance tests? | 11:44 |
wallento | is the internet dying? sourceware, closedcisc, lkml.. | 12:03 |
olofk | We should put it all on piratebay. That's one site that just refuses to die | 12:04 |
wallento | hehe | 12:05 |
wallento | I will mirror them to github and cronjob this mirror, but I cannot complete the initial mirroring due to sourceware just dying on the connection | 12:06 |
olofk | Aha! There's something called local labels in gnu assembler. Looks like I should use those instead | 12:06 |
wallento | they say it's DoS and now I feel guilty ;) | 12:06 |
olofk | wallento: Only newlib, or other stuff too? | 12:06 |
olofk | haha | 12:06 |
wallento | all | 12:06 |
wallento | git and website | 12:07 |
wallento | http://thread.gmane.org/gmane.comp.gcc.devel/138648 | 12:07 |
olofk | That you're going to mirror? | 12:07 |
wallento | i want to mirror newlib.git and binutils-gdb.git | 12:08 |
wallento | so that at least the continuous integration does not fail permanently | 12:08 |
olofk | unless you kill github too :) | 12:09 |
wallento | I hope they have more than one webserver with short memory.. | 12:09 |
olofk | wallento: How should we do with the UART patch? Can you handle that? | 12:27 |
wallento | yes | 12:27 |
olofk | Great! | 12:27 |
wallento | I unfortunately did something bad :) | 12:27 |
wallento | I rebased the newlib repo | 12:27 |
olofk | oh god | 12:27 |
wallento | to clarify the stuff | 12:28 |
wallento | if you don't like to do the same | 12:28 |
wallento | just send me the patch | 12:28 |
wallento | And I will apply it | 12:28 |
wallento | :) | 12:28 |
wallento | I changed the branch naming in https://github.com/wallento/newlib | 12:28 |
olofk | - while (!REG8(LSR) & LSR_TFE) {} | 12:28 |
olofk | + while (!(REG8(LSR) & LSR_TFE)) {} | 12:28 |
wallento | now it is identical to or1k-src and or1k-gcc | 12:28 |
olofk | There you go :) | 12:29 |
wallento | thanks :) | 12:29 |
olofk | jeremybennett suggested also that we should enable long-long by default to be c99-compatible | 12:29 |
olofk | But I saw that there's a separate c99-configure flag that could be enabled as well, so I'm not sure which would be the best way to go there | 12:30 |
wallento | mmh, I will have a look at it. there also was a thread about C99 on the newlib list recently | 12:30 |
olofk | I guess it's not big deal right now as it can be explicitly enabled (as stated in opencores bug 103), but I thought I should mention it before I forget it | 12:31 |
wallento | olofk: I added this and some documentation: https://github.com/openrisc/newlib/commit/4ac2e9d97f181563404c8c7c3e841b9cc1c0f0e0 | 13:05 |
olofk | wallento: Nice | 13:11 |
olofk | It would be great to have this sent in for newlib-2.2.0-2, which should be out around feb 19 | 13:12 |
wallento | yep, I just let the ci compile it | 13:22 |
wallento | but code-wise this is the only change, so there should not be a change | 13:23 |
olofk | wallento: http://www.juliusbaxter.net/openrisc-irc/%23openrisc.2015-01-20.log.html#t12:14 | 13:25 |
wallento | HEHE | 13:26 |
olofk | :) | 13:26 |
wallento | maybe you can test it then ;) | 13:26 |
wallento | builds are running | 13:26 |
olofk | naaa... it will work :) | 13:26 |
olofk | wallento: Have you tried writing to the UART? | 14:41 |
olofk | No, reading from I mean | 14:42 |
olofk | I only get -1 back from getchar | 14:43 |
wallento | yes, thats a missing feature | 14:48 |
wallento | problem is that I changed from reading directly to interrupts | 14:48 |
olofk | ahh | 14:48 |
wallento | I am still thinking of a way to do it properly | 14:49 |
wallento | so that both are supported | 14:49 |
wallento | because reading is blocking I suppose | 14:49 |
wallento | and it primarily makes sense with threading then | 14:49 |
wallento | but I haven't thaught it through | 14:50 |
wallento | maybe we just support both | 14:50 |
wallento | setting a callback and blocking read | 14:50 |
olofk | How the hell does interrupts work? | 15:04 |
olofk | I get an interrupt and it enters the function I set as the IRQ handler | 15:05 |
olofk | For debugging purposes, I just print IRQ in the call back function | 15:06 |
olofk | If I clear the interrupt source just prior to the printf, I don't see the printf | 15:06 |
olofk | ...or do I...? | 15:08 |
ysionneau | stekern hi! https://github.com/openrisc/llvm-or1k is this llvm 3.4 or 3.5? I think it's 3.4 but not sure | 15:08 |
olofk | Fuck interrupts. I'm polling instead | 15:09 |
wallento | olofk: you set the handler and it is entered when the line gets an interrupt | 15:28 |
wallento | what you experience is confusing | 15:29 |
wallento | so its kind of: REG32(MYDEVICE_RESET_IRQ); printf("IRQ\n"); ? | 15:29 |
wallento | and the other way around works? | 15:30 |
wallento | maybe it crashes? alignment? bus error? | 15:30 |
olofk | wallento: Sorry. I was actually talking about something other than the UART problems, but reading it now I see that's not very obvious :) | 18:59 |
olofk | It was an IRQ from my dma streamer, and just a good ol' printf I used for debugging | 18:59 |
--- Log closed Wed Feb 04 00:00:01 2015 |
Generated by irclog2html.py 2.15.2 by Marius Gedminas - find it at mg.pov.lt!