They are FS-mode only, but not for any particular reason that I know
of.  I expect that you can go into src/arch/alpha/isa/decoder.isa and
take the #endif that matches the "#if FULL_SYSTEM" that the m5 insts
are inside and move that up above the "decode M5FUNC" line.  (It's a
little more complicated as you can't split the "format BasicOperate"
block, and hw_rei is definitely FS-only... but I think you get the
idea.)

Steve

On Thu, Nov 13, 2008 at 11:29 AM, Clint Smullen <[EMAIL PROTECTED]> wrote:
> I tried the following, which works for me in full-system mode programs:
>
> The code to give you the functions is in m5/util//m5/m5op_alpha.S, and
> the header that provides them for C programs is m5/util/m5/m5op.h. The
> following program:
>
>        #include "m5/util/m5/m5op.h"
>        void _start() { m5_exit(0); }
>
> Compiles with:
>
>        alpha-unknown-linux-gnu-gcc -nostdlib nm.c abi-tag.o m5/util/m5/
> m5op_alpha.S
>
> But M5 chokes on it. I don't normally use syscall-emulation, but do
> you know if the M5 instructions are supported in SE mode? I directly
> dropped the assembly bit into the program, and M5 then gave me an
> error about an invalid instruction. You may have to handcode a syscall
> to signal a UNIX exit, instead.
>
>        - Clint
>
> On Nov 13, 2008, at 2:08 AM, Shoaib Akram wrote:
>
>> Where do you suggest I put m5_exit, in c program? How?
>>
>> ---- Original message ----
>>> Date: Wed, 12 Nov 2008 19:35:41 -0500
>>> From: Clint Smullen <[EMAIL PROTECTED]>
>>> Subject: Re: [m5-users] statictics
>>> To: M5 users mailing list <[email protected]>
>>>
>>> Different platforms choose whether or not to automatically prefix
>>> underscores and whether start or _start is the default symbol. On a
>>> linux system, I was able to compile and link the following program:
>>>
>>>      void _start() { }
>>>
>>> Using just:
>>>
>>>      gcc -nostdlib nm.c
>>>
>>> The resulting program crashes, however, since it does not have what
>>> is
>>> typically contained within crt0. The important thing to keep in mind,
>>> is that start() should never return. Adding a trivial loop proves
>>> this, as with the following variant:
>>>
>>>      void start() { while (1) { } }
>>>
>>> Since you are running it within M5, I would suggest putting a
>>> trailing
>>> m5_exit to keep it from running of into no-man's land.
>>>
>>>      - Clint
>>>
>>> On Nov 12, 2008, at 7:18 PM, nathan binkert wrote:
>>>
>>>> You should be able to just create a function called _start.  Does
>>>> that
>>>> not work?  What does nm say when you do that?
>>>>
>>>> I think the thing you're missing here is that you need to tell the
>>>> linker that you're using _start as the entry point for your program.
>>>> The kernel doesn't actually look for _start (you should be able to
>>>> call it whatever you want).  It looks in the elf header for the
>>>> address of an entry point.  Because you've told it not to use the
>>>> stdlib, I'm guessing that the linker might not add the entry point
>>>> if
>>>> you don't tell it which symbol it is.
>>>>
>>>> Good luck.
>>>>
>>>> Nate
>>>>
>>>> On Wed, Nov 12, 2008 at 4:12 PM, Shoaib Akram <[EMAIL PROTECTED]>
>>>> wrote:
>>>>> Kind of not related to m5, but do you know how do I define my own
>>>>> _start symbol in a c program?
>>>>>
>>>>> ---- Original message ----
>>>>>> Date: Tue, 11 Nov 2008 01:05:35 -0800
>>>>>> From: Gabe Black <[EMAIL PROTECTED]>
>>>>>> Subject: Re: [m5-users] statictics
>>>>>> To: M5 users mailing list <[email protected]>
>>>>>>
>>>>>> I believe you use the -nostdlib option to leave out all of the
>>>>>> standard
>>>>>> library stuff, including _start which kicks off all the things Ali
>>>>>> mentioned and more and then finally calls main(). In your program
>>>>>> you'll
>>>>>> then need to define _start yourself. If you're writing your
>>>>>> program in
>>>>>> assembly, then all you need to do is include a label called _start
>>>>>> and
>>>>>> put everything you want to run after it. If your program uses any
>>>>>> system
>>>>>> calls you'll have to implement stubs for those since those are
>>>>>> part of
>>>>>> the standard library too.
>>>>>>
>>>>>> Gabe
>>>>>>
>>>>>> Ali Saidi wrote:
>>>>>>> No it's probably from all the libc _start code that is executed.
>>>>>>> Even
>>>>>>> if main() is a single line there is much more code that is
>>>>>>> included in
>>>>>>> the binary to setup the environment properly, get the arguments
>>>>>>> in
>>>>>>> order, see if the terminal is character or line buffered, etc.
>>>>>>> You
>>>>>>> should be able to convince the linker to not include all of
>>>>>>> this -
>>>>>>> fno-
>>>>>>> builtin, but you'll need to define a _start symbol.
>>>>>>>
>>>>>>> Ali
>>>>>>>
>>>>>>> On Nov 10, 2008, at 11:21 PM, Shoaib Akram wrote:
>>>>>>>
>>>>>>>
>>>>>>>> I wrote a simple program with 3 branches and ran it on m5. The
>>>>>>>> statstics show much more branches and the number of instructions
>>>>>>>> executed are also more than the assembly generated. Is it
>>>>>>>> because of
>>>>>>>> noise from emulated system calls?
>>>>>>>> _______________________________________________
>>>>>>>> m5-users mailing list
>>>>>>>> [email protected]
>>>>>>>> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> m5-users mailing list
>>>>>>> [email protected]
>>>>>>> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> m5-users mailing list
>>>>>> [email protected]
>>>>>> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
>>>>> _______________________________________________
>>>>> m5-users mailing list
>>>>> [email protected]
>>>>> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
>>>>>
>>>>>
>>>> _______________________________________________
>>>> m5-users mailing list
>>>> [email protected]
>>>> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
>>>
>>> _______________________________________________
>>> m5-users mailing list
>>> [email protected]
>>> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
>> _______________________________________________
>> m5-users mailing list
>> [email protected]
>> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
>
> _______________________________________________
> m5-users mailing list
> [email protected]
> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
>
_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users

Reply via email to