[comp.sys.amiga.tech] Public Code

451061@UOTTAWA.BITNET (Valentin Pepelea) (06/28/89)

In the Exec manual, (or was that in the autodocs?) it is said that all
interrupt code and data has to be placed in MEMF_PUBLIC memory, because by
definition, all MEMF_PUBLIC memory also happens to be MEMF_LOCKED memory.
(That was a mistake, there should have been a separate flag for that.)

Well, do the compilers out there indeed tell the linker that the hunks which
contain interrupt code have to be placed in public memory?

For example, lattice has the __interrupt qualifier for functions. What does
that qualifier do? Does it force the linker to load the code in public memory?

This is a signifincant detail, because if indeed all compilers (and
programmers) make sure their interrupt code, and code that calls Forbid() and
Disable() are located in locked memory, then an upcoming virtual memory manager
will have every right to crash programs which do not follow these rules.

Valentin
_________________________________________________________________________
"An  operating  system  without         Name:   Valentin Pepelea
 virtual memory is an operating         Phonet: (613) 231-7476 (New!)
 system without virtue."                Bitnet: 451061@Uottawa.bitnet
                                        Usenet: Use cunyvm.cuny.edu gate
         - Ancient Inca Proverb         Planet: 451061@acadvm1.UOttawa.CA

dillon@POSTGRES.BERKELEY.EDU (Matt Dillon) (06/30/89)

:For example, lattice has the __interrupt qualifier for functions. What does
:that qualifier do? Does it force the linker to load the code in public memory?

	The manual says it does nothing.  It only exists to maintain 
compatibility with ports to other machines (??).  The only special
qualifier that would be applicable would be the __saveds qualifier (save
the global data base register A4 and then load it with the proper value.
restore it before returning).  

	With Lattice C V5.02 you can also specify that arguments to functions
exist in specific registers so interrupt code can be written completely in
C, as can library code.  I haven't dealt with that specific feature too much
yet since my goal is to get my programs to compile under both Lattice C and
Manx C.  I guess I'll post a message on that.

:This is a signifincant detail, because if indeed all compilers (and
:programmers) make sure their interrupt code, and code that calls Forbid() and
:Disable() are located in locked memory, then an upcoming virtual memory manager
:will have every right to crash programs which do not follow these rules.
:
:Valentin

	Heh.  That's Valentin talking all right.  Hopefully I'll be able 
to get my hands on an A2500 so I can fool around with the VM stuff! 

					-Matt