. += _kern_offset;
. = ALIGN(4096); usermapped_start = .;
- .usermapped_glo : AT(ADDR(.usermapped_glo) - _kern_offset) { usermapped_glo*.o(*) }
+ .usermapped_glo : AT(ADDR(.usermapped_glo) - _kern_offset) { *(.usermapped_glo) }
. = ALIGN(4096); usermapped_nonglo_start = .;
- .usermapped : AT(ADDR(.usermapped) - _kern_offset) { usermapped_*.o(*) }
+ .usermapped : AT(ADDR(.usermapped) - _kern_offset) { *(.usermapped) }
. = ALIGN(4096); usermapped_end = .;
.text : AT(ADDR(.text) - _kern_offset) { *(.text*) }
_etext = .;
{
*(.ARM.exidx*)
}
-
}
.unpaged_text : { unpaged_*.o(.text) }
.unpaged_data ALIGN(4096) : { unpaged_*.o(.data .rodata*) }
- .unpaged_bss ALIGN(4096) : { unpaged_*.o(.bss COMMON) }
+ .unpaged_bss ALIGN(4096) : { unpaged_*.o(.bss COMMON) }
__k_unpaged__kern_unpaged_end = .;
. += _kern_offset;
. = ALIGN(4096); usermapped_start = .;
- .usermapped_glo : AT(ADDR(.usermapped_glo) - _kern_offset) { usermapped_glo*.o(*) }
+ .usermapped_glo : AT(ADDR(.usermapped_glo) - _kern_offset) { *(.usermapped_glo) }
. = ALIGN(4096); usermapped_nonglo_start = .;
- .usermapped : AT(ADDR(.usermapped) - _kern_offset) { usermapped_*.o(*) }
+ .usermapped : AT(ADDR(.usermapped) - _kern_offset) { *(.usermapped) }
. = ALIGN(4096); usermapped_end = .;
.text : AT(ADDR(.text) - _kern_offset) { *(.text*) }
.data ALIGN(4096) : AT(ADDR(.data) - _kern_offset) { *(.data .rodata* ) }
#include "kernel/kernel.h"
#include "arch_proto.h"
-struct minix_ipcvecs minix_ipcvecs_softint = {
+struct minix_ipcvecs minix_ipcvecs_softint __section(".usermapped") = {
.send = usermapped_send_softint,
.receive = usermapped_receive_softint,
.sendrec = usermapped_sendrec_softint,
.senda = usermapped_senda_softint
};
-struct minix_ipcvecs minix_ipcvecs_sysenter = {
+struct minix_ipcvecs minix_ipcvecs_sysenter __section(".usermapped") = {
.send = usermapped_send_sysenter,
.receive = usermapped_receive_sysenter,
.sendrec = usermapped_sendrec_sysenter,
.senda = usermapped_senda_sysenter
};
-struct minix_ipcvecs minix_ipcvecs_syscall = {
+struct minix_ipcvecs minix_ipcvecs_syscall __section(".usermapped") = {
.send = usermapped_send_syscall,
.receive = usermapped_receive_syscall,
.sendrec = usermapped_sendrec_syscall,
#include <minix/ipcconst.h>
#include <machine/asm.h>
+/* Redefine _ENTRY to put the following function in the section
+ * ".usermapped_glo". */
+#undef _ENTRY
+#define _ENTRY(x) \
+ _ALIGN_TEXT; .globl x; .type x,@function; x:
+
+.section .usermapped_glo, "wax", @progbits
+
/**========================================================================* */
/* IPC assembly routines * */
/**========================================================================* */
#include "kernel/kernel.h"
/* This is the user-visible struct that has pointers to other bits of data. */
-struct minix_kerninfo minix_kerninfo;
+struct minix_kerninfo minix_kerninfo __section(".usermapped");
/* Kernel information structures. */
-struct kinfo kinfo; /* kernel information for users */
-struct machine machine; /* machine information for users */
-struct kmessages kmessages; /* diagnostic messages in kernel */
-struct loadinfo loadinfo; /* status of load average */
+struct kinfo kinfo __section(".usermapped"); /* kernel information for users */
+struct machine machine __section(".usermapped"); /* machine information for users */
+struct kmessages kmessages __section(".usermapped"); /* diagnostic messages in kernel */
+struct loadinfo loadinfo __section(".usermapped"); /* status of load average */