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