Hi,
sir_richard wrote:
> * We really have to get a good DS/ES first before touching any data.
> *
> * These two reads will either go in a register (with optimizations ON) or
> * a stack variable (which is on SS:ESP, guaranteed to be good/valid).
> *
> * Because the assembly is marked volatile, the order of instructions is
> * as-is, otherwise the optimizer could simply get rid of our DS/ES.
Timo Kreuzer wrote:
> 2.) Segements should be fixed up before entering C code, as not doing so
> may introduce possible compiler dependend breakages. It's also much
> cleaner and there's no reason to do the same stuff later in inline assembly
> instead of direcly in the asm entry point.
Ros Arm wrote:
> Regarding #2, I unfortunately do not see the need to add more assembly
> when it is not needed. There are no subtle compiler breakages involved,
> since it is impossible for the compiler to add a DS/ES access for no reason
> at all (can you come up with an example?), this is part of the contract the
> compiler has to make (if compilers did this, it would break a whole class of
> embedded and real-mode software). Because the stack is safe, I think it's
> worth avoiding the extra lines of assembly. The C inlines will produce
> exactly the same code anyway.
Not as a guide to action, simply to note — there is no guarantee that
volatile asm statements (and code around them) will never be
reordered. As only two registers are needed to keep Ds and Es, it
seems to work there. But in a general case, GCC does not hesitate to
rearrange such stuff…
Hi,
I am interested to work on reactos developement. I want to take my work on reactos as a credit in my university. I spoke toAleksey Bragin (Fireball) regarding this. He asked me to mail to the developer mailing list. I need some concrete work to work for like five months or more so that I can show to professor to get his acceptance. My skills involve mostly on developing .I am mostly a C++ programmer with some experience in assembly language. I have some prior experience on filesystems and kernel but mostly linux. I have some experience on windows drivers too. By the way I am a masters student in computer science from US.
Thanks & Regards,
sudhir.
.
@Sir Richard,
While fixing trunk breakage, I also fixed another bug in
KiTrap0DHandler, which was always only checking one prefix.
I attached the patch.
Regards,
Timo
Index: traphdlr.c
===================================================================
--- traphdlr.c (Revision 45057)
+++ traphdlr.c (Arbeitskopie)
@@ -1103,19 +1103,23 @@
/* Skip prefix instructions */
for (j = 0; j < sizeof(KiTrapPrefixTable); j++)
{
- /* Is this NOT a prefix instruction? */
- if (Instructions[i] != KiTrapPrefixTable[j])
+ /* Is this a prefix instruction? */
+ if (Instructions[i] == KiTrapPrefixTable[j])
{
- /* We can go ahead and handle the fault now */
- Instruction = Instructions[i];
+ /* Stop looking */
break;
}
}
- /* Do we need to keep looking? */
- if (Instruction) break;
+ /* Is this NOT any prefix instruction? */
+ if (Instructions[i] != KiTrapPrefixTable[j])
+ {
+ /* We can go ahead and handle the fault now */
+ Instruction = Instructions[i];
+ break;
+ }
}
-
+
/* If all we found was prefixes, then this instruction is too long */
if (!Instruction)
{
:)
Begin forwarded message:
> From: Max Winter <maxwinter2001(a)yahoo.com>
> Date: January 13, 2010 1:26:11 AM GMT+03:00
> To: xxxxxxx(a)reactos.org
> Subject: removing ReactOS
>
> How do I get ReactOS off my computer? I downloaded a third of it
> and for various reasons stopped the download. I want to get it off
> my computer now but it is not giving me delete or cut options.
> This is as bad as malware, or Hotel California, you can check it
> in but you can't check out.
>
> M
>
Go into ntoskrnl and svn up -r 45013 should take care of it.......
On Wed, Jan 13, 2010 at 3:31 AM, Ged Murphy <gedmurphy(a)gmail.com> wrote:
> sir_richard,
>
> Trunk is still broken and is causing issues for some of the dev team.
>
> You can see the problems in our buildbot test machine:
> - Go to the following address : http://build.reactos.org:8010
> - under the x86_(Test) machine, click on the stdio for the 'test' stage.
> - You'll see stage 1 complete, the stage 2 bugchecks.
>
> Could you please address this problem before continuing your work as it's ruining the test system.
> The problem is that because our test machine can't run we aren't able to monitor other commits in other areas, meaning we're potentially introducing other bugs that we're now missing.
> According to our policy, failure to fix this soon (it's normally 24 hours) will result in us having to freeze development on trunk until the bug is fixed. If we're unable to fix it in a reasonable amount of time then the changes need to be reverted until we have a bootable OS again.
>
> Regards,
> Ged Murphy.
>
>
>
Hi,
I suggest the following changes to the current implementation:
1.) Replace the PUSHA in the trap entry code, by a series of MOVs to the
correct stack positions. The same for the trap exit code.
KiTrapFrameFromPushaStack can be removed then. This would result in more
clear, less complex and faster code, with only a few additional
assembly instructions in the trap entry macro. The exit could be done
either by normal call/return or by a jmp to an exit handler.
2.) Segements should be fixed up before entering C code, as not doing so
may introduce possible compiler dependend breakages. It's also much
cleaner and there's no reason to do the same stuff later in inline
assembly instead of direcly in the asm entry point.
The resulting code might looks something like this:
/* Allocate KTRAP_FRAME */
sub esp, KTRAP_FRAME_LENGTH - 10 * 4
/* Save integer registers */
mov [esp + KTRAP_FRAME_EBP], ebp
mov [esp + KTRAP_FRAME_EBX], ebx
mov [esp + KTRAP_FRAME_ESI], esi
mov [esp + KTRAP_FRAME_EDI], edi
mov [esp + KTRAP_FRAME_EAX], eax
mov [esp + KTRAP_FRAME_ECX], ecx
mov [esp + KTRAP_FRAME_EDX], edx
mov [esp + KTRAP_FRAME_EBX], ebx
/* Save segment regs */
mov [esp + KTRAP_FRAME_SEGDS], ds
mov [esp + KTRAP_FRAME_SEGES], es
/* Fixup segment regs */
mov ax, KGDT_R3_DATA | RPL_MASK
mov ds, ax
mov es, ax
Timo
dreimer(a)svn.reactos.org wrote:
> URL: http://svn.reactos.org/svn/reactos?rev=45050&view=rev
FYI, I already have a change like this ready for some months, see
http://reactos.colinfinck.de/files/Other_Stuff/Clean.cmd
I won't commit it though, because after a suggestion from KJK, I agree that
it would be the best if RosBE's basic clean logic goes into the Makefile
itself and RosBE's clean scripts only call "make rosbe-clean" (or whatever
it'll be called) afterwards.
Then no RosBE clean script would ever need to care about the environment
variables for object and output pathes again. We would stop duplicating
logic in the Makefile and in RosBE and a simple "clean" would always operate
on the same tree as a "make" by design.
This is another change that should be finished before we release RosBE 1.5,
because it'll break compatibility with older revisions (just like the new
toolchain will do), and I want to avoid doing this too often.
Best regards,
Colin
\o/
<3 <3 <3
dreimer(a)svn.reactos.org schrieb:
> Author: dreimer
> Date: Mon Jan 11 22:22:52 2010
> New Revision: 45050
>
> URL: http://svn.reactos.org/svn/reactos?rev=45050&view=rev
> Log:
> Ok, last time I delete my built main tree while playing with clean in a branch!
> Now clean cleans the branch you are in!
>
>