Hey Adam,
That's ok as long it's also ok for native Linux.
I am not sure what they did with native Linux but I know from the SCC forums that these instructions do not exist. So I guess that is ok.
I'm wondering how did you end up with the code containing the cli? In L4Linux this part is replaced.
Well, I am not sure about that. I did force a couple of options though as I already mentioned. The reason was that when I tried to compile L4linux for pentium/i586, I saw that it would complain about CONFIG_X86_CMPXCHG64 not being enabled (this corresponds to the PAE option). So I disabled this explicitly since the processors on the SCC do not contain PAE. I also disabled the CONFIG_X86_CMPXCHG and CONFIG_CMPXCHG_LOCAL options.
Attached is my l4linux config. Just as a note, I am using quite an old build of L4linux. Do you know of any related bugs?
Thanks, Ramya ________________________________________ From: l4-hackers [l4-hackers-bounces@os.inf.tu-dresden.de] on behalf of Adam Lackorzynski [adam@os.inf.tu-dresden.de] Sent: 08 September 2014 00:29 To: l4-hackers@os.inf.tu-dresden.de Subject: Re: Aborted L4linux due to CLI/STI
On Fri Sep 05, 2014 at 16:21:34 +0000, Masti Ramya Jayaram wrote:
I forgot to mention that it also does not support the traditional cmpxchg instructions using the lock line. That is why I disabled it.
That's ok as long it's also ok for native Linux.
On 05 Sep 2014, at 18:16, "Masti Ramya Jayaram" rmasti@inf.ethz.ch wrote:
Dear all,
I get an error during L4linux boot when I enter the debugger (using ESC) and resume:
Aborted L4linux due to CLI/STI at 0x534911.
When I disassemble this using gdb:
(gdb) disassemble 0x534911 Dump of assembler code for function cmpxchg8b_emu: 0x00534910 <+0>: pushf 0x00534911 <+1>: cli 0x00534912 <+2>: cmp (%esi),%eax 0x00534914 <+4>: jne 0x534922 <cmpxchg8b_emu+18> 0x00534916 <+6>: cmp 0x4(%esi),%edx 0x00534919 <+9>: jne 0x534924 <half_same> 0x0053491b <+11>: mov %ebx,(%esi) 0x0053491d <+13>: mov %ecx,0x4(%esi) 0x00534920 <+16>: popf 0x00534921 <+17>: ret 0x00534922 <+18>: mov (%esi),%eax 0x00534924 <+0>: mov 0x4(%esi),%edx 0x00534927 <+3>: popf 0x00534928 <+4>: ret
When I built l4linux, I had to disable CONFIG_X86_CMPXCHG, CONFIG_CMPXCHG_LOCAL and CONFIG_X86_CMPXCHG64 despite building for the Pentium because my processor does not support PAE (which is the option that enables this). I am guessing This is the reason it tries to emulate the CMPXCHG instructions.
What is the correct l4linux configuration to use for a machine that does not support any of the atomic instructions like CMPXCHG8, ATOMIC, etc.?
Which processor type did you select? In L4Linux, there's an adapted version of the cmpxchg8b_emu code that is enabled if CONFIG_X86_CMPXCHG64 is not set. I'm wondering how did you end up with the code containing the cli? In L4Linux this part is replaced.
Adam -- Adam adam@os.inf.tu-dresden.de Lackorzynski http://os.inf.tu-dresden.de/~adam/
_______________________________________________ l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers